From: Pat Thoyts <patthoyts@users.sourceforge.net>
Date: Fri, 4 Oct 2024 15:03:29 +0000 (+0100)
Subject: Tidy up whitespace and CMake definition
X-Git-Url: http://www.privyetmir.co.uk/gitweb?a=commitdiff_plain;h=7f47f52484b93221c1713fa86e0c3cbd67212c4f;p=accessibility%2Fuiademo.git

Tidy up whitespace and CMake definition
---

diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..05fb160
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,19 @@
+# top-most EditorConfig file
+root = true
+
+# Don't use tabs for indentation.
+[*]
+indent_style = space
+trim_trailing_whitespace = true
+# (Please don't specify an indent_size here; that has too many unintended consequences.)
+
+[*.{c,h,cxx,cpp}]
+indent_size = 4
+
+# Powershell files
+[*.{ps1,psm1,psd1}]
+indent_size = 4
+
+# Xml based files
+[*.{proj,xml,nuspec}]
+indent_size = 2
diff --git a/ButtonProvider.cpp b/ButtonProvider.cpp
index 615f0a2..1e402e9 100644
--- a/ButtonProvider.cpp
+++ b/ButtonProvider.cpp
@@ -8,14 +8,14 @@
 HRESULT ButtonProvider::CreateInstance(HWND hwnd, IRawElementProviderSimple **ppProvider)
 {
     ButtonProvider *provider = new (std::nothrow) ButtonProvider(hwnd);
-	wchar_t wsz[128]; swprintf_s(wsz, L"Created %p\n", provider); OutputDebugStringW(wsz);
+    wchar_t wsz[128]; swprintf_s(wsz, L"Created %p\n", provider); OutputDebugStringW(wsz);
     return provider->QueryInterface(IID_IRawElementProviderSimple, reinterpret_cast<void**>(ppProvider));
 }
 
 DECLSPEC_NOTHROW STDMETHODIMP ButtonProvider::QueryInterface(REFIID riid, void **ppv)
 {
     HRESULT hr = S_OK;
-	*ppv = nullptr;
+    *ppv = nullptr;
     if (IsEqualIID(riid, IID_IUnknown)
         || IsEqualIID(riid, IID_IRawElementProviderSimple))
     {
@@ -27,11 +27,11 @@ DECLSPEC_NOTHROW STDMETHODIMP ButtonProvider::QueryInterface(REFIID riid, void *
         *ppv = static_cast<IInvokeProvider *>(this);
         this->AddRef();
     }
-	else if (IsEqualIID(riid, IID_IToggleProvider))
-	{
-		*ppv = static_cast<IToggleProvider *>(this);
-		this->AddRef();
-	}
+    else if (IsEqualIID(riid, IID_IToggleProvider))
+    {
+        *ppv = static_cast<IToggleProvider *>(this);
+        this->AddRef();
+    }
     else
         hr = E_NOINTERFACE;
     return hr;
@@ -39,19 +39,19 @@ DECLSPEC_NOTHROW STDMETHODIMP ButtonProvider::QueryInterface(REFIID riid, void *
 
 DECLSPEC_NOTHROW STDMETHODIMP_(ULONG) ButtonProvider::AddRef()
 {
-	ULONG result = InterlockedIncrement(&_refcount);
-	//wchar_t wsz[128]; swprintf_s(wsz, L"AddRef %lu\n", result); OutputDebugStringW(wsz);
-	return result;
+    ULONG result = InterlockedIncrement(&_refcount);
+    //wchar_t wsz[128]; swprintf_s(wsz, L"AddRef %lu\n", result); OutputDebugStringW(wsz);
+    return result;
 }
 
 DECLSPEC_NOTHROW STDMETHODIMP_(ULONG) ButtonProvider::Release()
 {
     unsigned long result = InterlockedDecrement(&_refcount);
-	//wchar_t wsz[128]; swprintf_s(wsz, L"Release %lu\n", result); OutputDebugStringW(wsz);
-	if (result == 0)
+    //wchar_t wsz[128]; swprintf_s(wsz, L"Release %lu\n", result); OutputDebugStringW(wsz);
+    if (result == 0)
     {
-		wchar_t wsz[128]; swprintf_s(wsz, L"Destroy %p\n", this); OutputDebugStringW(wsz);
-		delete this;
+        wchar_t wsz[128]; swprintf_s(wsz, L"Destroy %p\n", this); OutputDebugStringW(wsz);
+        delete this;
     }
     return result;
 }
@@ -61,15 +61,15 @@ DECLSPEC_NOTHROW STDMETHODIMP ButtonProvider::get_ProviderOptions(ProviderOption
     HRESULT hr = E_POINTER;
     if (pVal)
     {
-		if (!IsWindow(_hwnd))
-			hr = UIA_E_ELEMENTNOTENABLED;
-		else
-		{
-			*pVal = ProviderOptions_ServerSideProvider | ProviderOptions_UseComThreading;
-			hr = S_OK;
-		}
+        if (!IsWindow(_hwnd))
+            hr = UIA_E_ELEMENTNOTENABLED;
+        else
+        {
+            *pVal = ProviderOptions_ServerSideProvider | ProviderOptions_UseComThreading;
+            hr = S_OK;
+        }
     }
-    return hr;    
+    return hr;
 }
 
 DECLSPEC_NOTHROW STDMETHODIMP ButtonProvider::GetPatternProvider(PATTERNID patternId, IUnknown **ppVal)
@@ -83,10 +83,10 @@ DECLSPEC_NOTHROW STDMETHODIMP ButtonProvider::GetPatternProvider(PATTERNID patte
         {
             hr = QueryInterface(IID_IUnknown, reinterpret_cast<void **>(ppVal));
         }
-		else if (patternId == UIA_TogglePatternId)
-		{
-			hr = QueryInterface(IID_IUnknown, reinterpret_cast<void **>(ppVal));
-		}
+        else if (patternId == UIA_TogglePatternId)
+        {
+            hr = QueryInterface(IID_IUnknown, reinterpret_cast<void **>(ppVal));
+        }
     }
     return hr;
 }
@@ -98,20 +98,20 @@ DECLSPEC_NOTHROW STDMETHODIMP ButtonProvider::GetPropertyValue(PROPERTYID proper
         pVal->vt = VT_I4;
         pVal->lVal = UIA_ButtonControlTypeId;
     }
-	else if (propertyId == UIA_IsControlElementPropertyId)
-	{
-		pVal->vt = VT_BOOL;
-		pVal->boolVal = VARIANT_TRUE;
-	}
-	else if (propertyId == UIA_HasKeyboardFocusPropertyId)
-	{
-		pVal->vt = VT_BOOL;
-		pVal->boolVal = VARIANT_FALSE;
-	}
-	else if (propertyId == UIA_ClassNamePropertyId)
-    {
-		wchar_t name[32] = { 0 };
-		GetClassNameW(_hwnd, name, 32);
+    else if (propertyId == UIA_IsControlElementPropertyId)
+    {
+        pVal->vt = VT_BOOL;
+        pVal->boolVal = VARIANT_TRUE;
+    }
+    else if (propertyId == UIA_HasKeyboardFocusPropertyId)
+    {
+        pVal->vt = VT_BOOL;
+        pVal->boolVal = VARIANT_FALSE;
+    }
+    else if (propertyId == UIA_ClassNamePropertyId)
+    {
+        wchar_t name[32] = { 0 };
+        GetClassNameW(_hwnd, name, 32);
         pVal->vt = VT_BSTR;
         pVal->bstrVal = SysAllocString(name);
     }
@@ -143,39 +143,39 @@ DECLSPEC_NOTHROW STDMETHODIMP ButtonProvider::get_HostRawElementProvider(IRawEle
 
 DECLSPEC_NOTHROW STDMETHODIMP ButtonProvider::Invoke()
 {
-	HRESULT hr = static_cast<HRESULT>(UIA_E_ELEMENTNOTAVAILABLE);
-	if (IsWindow(_hwnd))
-	{
-		PostMessage(_hwnd, BM_CLICK, 0L, 0L);
-		hr = S_OK;
-	}
-	return hr;
+    HRESULT hr = static_cast<HRESULT>(UIA_E_ELEMENTNOTAVAILABLE);
+    if (IsWindow(_hwnd))
+    {
+        PostMessage(_hwnd, BM_CLICK, 0L, 0L);
+        hr = S_OK;
+    }
+    return hr;
 }
 
 DECLSPEC_NOTHROW STDMETHODIMP ButtonProvider::Toggle()
 {
-	HRESULT hr = static_cast<HRESULT>(UIA_E_ELEMENTNOTAVAILABLE);
-	if (IsWindow(_hwnd))
-	{
-		PostMessage(_hwnd, BM_CLICK, 0, 0);
-		hr = S_OK;
-	}
-	return hr;
+    HRESULT hr = static_cast<HRESULT>(UIA_E_ELEMENTNOTAVAILABLE);
+    if (IsWindow(_hwnd))
+    {
+        PostMessage(_hwnd, BM_CLICK, 0, 0);
+        hr = S_OK;
+    }
+    return hr;
 }
 
 DECLSPEC_NOTHROW STDMETHODIMP ButtonProvider::get_ToggleState(ToggleState *pVal)
 {
-	HRESULT hr = E_POINTER;
-	if (pVal)
-	{
-		if (!IsWindow(_hwnd))
-			hr = static_cast<HRESULT>(UIA_E_ELEMENTNOTAVAILABLE);
-		else
-		{
-			auto state = SendMessage(_hwnd, BM_GETCHECK, WPARAM(0), LPARAM(0));
-			*pVal = (state == BST_CHECKED) ? ToggleState_On : ToggleState_Off;
-			hr = S_OK;
-		}
-	}
-	return hr;
-}
\ No newline at end of file
+    HRESULT hr = E_POINTER;
+    if (pVal)
+    {
+        if (!IsWindow(_hwnd))
+            hr = static_cast<HRESULT>(UIA_E_ELEMENTNOTAVAILABLE);
+        else
+        {
+            auto state = SendMessage(_hwnd, BM_GETCHECK, WPARAM(0), LPARAM(0));
+            *pVal = (state == BST_CHECKED) ? ToggleState_On : ToggleState_Off;
+            hr = S_OK;
+        }
+    }
+    return hr;
+}
diff --git a/ButtonProvider.h b/ButtonProvider.h
index ae1d551..080b025 100644
--- a/ButtonProvider.h
+++ b/ButtonProvider.h
@@ -6,7 +6,7 @@ class ButtonProvider : public IRawElementProviderSimple, public IInvokeProvider,
 {
 public:
     static HRESULT CreateInstance(HWND hwnd, IRawElementProviderSimple **ppProvider);
-    
+
     STDMETHOD(QueryInterface)(REFIID riid, void **ppv);
     STDMETHOD_(ULONG, AddRef)();
     STDMETHOD_(ULONG, Release)();
@@ -18,13 +18,13 @@ public:
 
     STDMETHOD(Invoke)();
 
-	STDMETHOD(Toggle)();
-	STDMETHOD(get_ToggleState)(ToggleState *pVal);
+    STDMETHOD(Toggle)();
+    STDMETHOD(get_ToggleState)(ToggleState *pVal);
 
 private:
     ButtonProvider() : _refcount(0), _hwnd(HWND_DESKTOP) {}
     ButtonProvider(HWND hwnd) : _refcount(0), _hwnd(hwnd) {}
-	virtual ~ButtonProvider() {}
-	unsigned long _refcount;
+    virtual ~ButtonProvider() {}
+    unsigned long _refcount;
     HWND _hwnd;
 };
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a2db266..44721c9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,19 +1,14 @@
-# CMAKE_BUILD_TYPE has no effect on the Visual Studio generator.
-#   cmake -G"Visual Studio 15 2017 Win64" ..
-#   cmake --build . --config Release
-#
-# For LLVM / CLang build:
-#   cmake -G"Visual Studio 15 2017 Win64" -T LLVM ..
-#   cmake --build . --config Release
+cmake_minimum_required(VERSION 3.26)
 
-cmake_minimum_required(VERSION 3.0)
+project(UIADemo VERSION 1.0 LANGUAGES CXX RC)
 
-ENABLE_LANGUAGE(RC)
-
-project(UIADemo VERSION 1.0)
+set(TARGET ${PROJECT_NAME})
 set(SOURCE main.cpp main.rc resource.h
            PolyButton.cpp PolyButton.h
            ButtonProvider.cpp ButtonProvider.h)
-set(CMAKE_CXX_STANDARD 14)
-add_definitions(-DUNICODE -D_UNICODE -DSTRICT -D_WIN32_LEAN_AND_MEAN -D_WIN32_WINNT=_WIN32_WINNT_WIN8)
-add_executable(${PROJECT_NAME} WIN32 ${SOURCE})
+
+add_executable(${TARGET} WIN32 ${SOURCE})
+target_compile_features(${TARGET} PRIVATE cxx_std_17)
+target_compile_definitions(${TARGET} PRIVATE
+    -DUNICODE -D_UNICODE -DSTRICT -D_WIN32_LEAN_AND_MEAN
+    -D_WIN32_WINNT=_WIN32_WINNT_WIN8)
diff --git a/PolyButton.cpp b/PolyButton.cpp
index 122e972..45ae6f4 100644
--- a/PolyButton.cpp
+++ b/PolyButton.cpp
@@ -60,8 +60,8 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT messageId, WPARAM wparam, LPARAM lparam
         case WM_DESTROY:
             {
                 PolyButton *ctrl = reinterpret_cast<PolyButton *>(GetWindowLongPtr(hwnd, GWLP_USERDATA));
-				UiaReturnRawElementProvider(hwnd, 0, 0, nullptr);
-				UiaDisconnectProvider(ctrl->GetUIAutomationProvider(hwnd));
+                UiaReturnRawElementProvider(hwnd, 0, 0, nullptr);
+                UiaDisconnectProvider(ctrl->GetUIAutomationProvider(hwnd));
                 delete ctrl;
             }
             break;
@@ -98,17 +98,17 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT messageId, WPARAM wparam, LPARAM lparam
                 ctrl->InvokeButton();
             }
             break;
-		case BM_CLICK:
-			{
-				PolyButton *ctrl = reinterpret_cast<PolyButton *>(GetWindowLongPtr(hwnd, GWLP_USERDATA));
-				ctrl->InvokeButton();
-			}
-			break;
-		case BM_GETCHECK:
-		{
-			PolyButton *ctrl = reinterpret_cast<PolyButton *>(GetWindowLongPtr(hwnd, GWLP_USERDATA));
-			return ctrl->IsChecked() ? BST_CHECKED : BST_UNCHECKED;
-		}
+        case BM_CLICK:
+            {
+                PolyButton *ctrl = reinterpret_cast<PolyButton *>(GetWindowLongPtr(hwnd, GWLP_USERDATA));
+                ctrl->InvokeButton();
+            }
+            break;
+        case BM_GETCHECK:
+        {
+            PolyButton *ctrl = reinterpret_cast<PolyButton *>(GetWindowLongPtr(hwnd, GWLP_USERDATA));
+            return ctrl->IsChecked() ? BST_CHECKED : BST_UNCHECKED;
+        }
     }
     return DefWindowProc(hwnd, messageId, wparam, lparam);
 }
@@ -190,17 +190,17 @@ void PolyButton::InvokeButton()
     {
         if ((_state & PolyButtonState::Focussed) != PolyButtonState::Focussed)
             SetFocus(_hwnd);
-		_state ^= PolyButtonState::Checked;
+        _state ^= PolyButtonState::Checked;
         if (UiaClientsAreListening())
         {
             // Raise an event.
-			IRawElementProviderSimple *p = nullptr;
-			if (_provider)
-			{
-				_provider->QueryInterface(&p);
-				UiaRaiseAutomationEvent(p, UIA_Invoke_InvokedEventId);
-				p->Release();
-			}
+            IRawElementProviderSimple *p = nullptr;
+            if (_provider)
+            {
+                _provider->QueryInterface(&p);
+                UiaRaiseAutomationEvent(p, UIA_Invoke_InvokedEventId);
+                p->Release();
+            }
         }
         InvalidateRect(_hwnd, nullptr, TRUE);
     }
diff --git a/PolyButton.h b/PolyButton.h
index b262484..19d7e9a 100644
--- a/PolyButton.h
+++ b/PolyButton.h
@@ -6,12 +6,12 @@
 #include <uiautomation.h>
 
 enum class PolyButtonState {
-	Normal = 0,
-	Active = (1 << 0),
-	Pressed = (1 << 1),
-	Focussed = (1 << 2),
-	Checked = (1 << 3),
-	Disabled = (1 << 4)
+    Normal = 0,
+    Active = (1 << 0),
+    Pressed = (1 << 1),
+    Focussed = (1 << 2),
+    Checked = (1 << 3),
+    Disabled = (1 << 4)
 };
 DEFINE_ENUM_FLAG_OPERATORS(PolyButtonState);
 
@@ -23,7 +23,7 @@ public:
     IRawElementProviderSimple *GetUIAutomationProvider(HWND hwnd);
     void InvokeButton();
     static void RegisterControl(HINSTANCE instance);
-	bool IsChecked() const { return ((_state & PolyButtonState::Checked) == PolyButtonState::Checked); }
+    bool IsChecked() const { return ((_state & PolyButtonState::Checked) == PolyButtonState::Checked); }
     void OnPaint();
     void OnSetFocus();
     void OnKillFocus();
diff --git a/main.cpp b/main.cpp
index 6f09f76..ac9dd50 100644
--- a/main.cpp
+++ b/main.cpp
@@ -9,29 +9,29 @@
 
 static INT_PTR CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM /*lParam*/)
 {
-	switch (message)
-	{
-	case WM_COMMAND:
-		if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
-		{
-			EndDialog(hDlg, LOWORD(wParam));
-			return TRUE;
-		}
-		break;
-	}
-	return FALSE;
+    switch (message)
+    {
+    case WM_COMMAND:
+        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
+        {
+            EndDialog(hDlg, LOWORD(wParam));
+            return TRUE;
+        }
+        break;
+    }
+    return FALSE;
 }
 
 int PASCAL
 WinMain(HINSTANCE hinst, HINSTANCE, LPSTR, int)
 {
-	Gdiplus::GdiplusStartupInput gdiplusStartupInput;
-	ULONG_PTR gdiplusToken(0);
-	Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
-	CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
-	PolyButton::RegisterControl(hinst);
-	DialogBox(hinst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc);
-	CoUninitialize();
-	Gdiplus::GdiplusShutdown(gdiplusToken);
-	return 0;
+    Gdiplus::GdiplusStartupInput gdiplusStartupInput;
+    ULONG_PTR gdiplusToken(0);
+    Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
+    CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
+    PolyButton::RegisterControl(hinst);
+    DialogBox(hinst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc);
+    CoUninitialize();
+    Gdiplus::GdiplusShutdown(gdiplusToken);
+    return 0;
 }
diff --git a/main.rc b/main.rc
index 595a68a..e12acb7 100644
--- a/main.rc
+++ b/main.rc
@@ -41,13 +41,13 @@ BEGIN
     BEGIN
         BLOCK "040904b0"
         BEGIN
-            VALUE "Comments", "Direct2D sample application"
+            VALUE "Comments", "Custom control UI automation example"
             VALUE "CompanyName", "Renishaw plc."
-            VALUE "FileDescription", "Direct2D sample application"
+            VALUE "FileDescription", "Custom control UI automation example"
             VALUE "FileVersion", "1, 0, 0, 0"
-            VALUE "InternalName", "D2DDemo"
+            VALUE "InternalName", "UIADemo"
             VALUE "LegalCopyright", "Copyright (c) 2020 Renishaw plc."
-            VALUE "OriginalFilename", "D2DDemo.exe"
+            VALUE "OriginalFilename", "UIADemo.exe"
             VALUE "ProductVersion", "1, 0, 0, 0"
         END
     END
@@ -74,18 +74,18 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
 // TEXTINCLUDE
 //
 
-1 TEXTINCLUDE 
+1 TEXTINCLUDE
 BEGIN
     "resource.h\0"
 END
 
-2 TEXTINCLUDE 
+2 TEXTINCLUDE
 BEGIN
     "#include <winres.h>\r\n"
     "\0"
 END
 
-3 TEXTINCLUDE 
+3 TEXTINCLUDE
 BEGIN
     "\r\n"
     "\0"