diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2021-10-27 15:29:19 -0500 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2021-11-01 16:34:09 -0500 |
| commit | dce1c97c7d3e76c18e4f80d4ffe288d2933a74bc (patch) | |
| tree | 68dc0653ee1a6fe962d82dac2159c8ab00a95808 /src/api | |
| parent | bad2e93524f376cfeb76d5231d4b08510bdad033 (diff) | |
| download | wix-dce1c97c7d3e76c18e4f80d4ffe288d2933a74bc.tar.gz wix-dce1c97c7d3e76c18e4f80d4ffe288d2933a74bc.tar.bz2 wix-dce1c97c7d3e76c18e4f80d4ffe288d2933a74bc.zip | |
Make thmutil automatically load controls during window creation.
Add control loaded event.
Diffstat (limited to 'src/api')
| -rw-r--r-- | src/api/burn/balutil/inc/BAFunctions.h | 15 | ||||
| -rw-r--r-- | src/api/burn/balutil/inc/BalBaseBAFunctions.h | 10 | ||||
| -rw-r--r-- | src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h | 12 | ||||
| -rw-r--r-- | src/api/burn/balutil/inc/IBAFunctions.h | 9 | ||||
| -rw-r--r-- | src/api/burn/balutil/inc/balutil.h | 2 | ||||
| -rw-r--r-- | src/api/burn/bextutil/inc/bextutil.h | 2 |
6 files changed, 50 insertions, 0 deletions
diff --git a/src/api/burn/balutil/inc/BAFunctions.h b/src/api/burn/balutil/inc/BAFunctions.h index ab6ea4d7..0eda95a1 100644 --- a/src/api/burn/balutil/inc/BAFunctions.h +++ b/src/api/burn/balutil/inc/BAFunctions.h | |||
| @@ -88,6 +88,7 @@ enum BA_FUNCTIONS_MESSAGE | |||
| 88 | BA_FUNCTIONS_MESSAGE_ONTHEMECONTROLLOADING, | 88 | BA_FUNCTIONS_MESSAGE_ONTHEMECONTROLLOADING, |
| 89 | BA_FUNCTIONS_MESSAGE_ONTHEMECONTROLWMCOMMAND, | 89 | BA_FUNCTIONS_MESSAGE_ONTHEMECONTROLWMCOMMAND, |
| 90 | BA_FUNCTIONS_MESSAGE_ONTHEMECONTROLWMNOTIFY, | 90 | BA_FUNCTIONS_MESSAGE_ONTHEMECONTROLWMNOTIFY, |
| 91 | BA_FUNCTIONS_MESSAGE_ONTHEMECONTROLLOADED, | ||
| 91 | }; | 92 | }; |
| 92 | 93 | ||
| 93 | typedef HRESULT(WINAPI *PFN_BA_FUNCTIONS_PROC)( | 94 | typedef HRESULT(WINAPI *PFN_BA_FUNCTIONS_PROC)( |
| @@ -115,6 +116,20 @@ struct BA_FUNCTIONS_CREATE_RESULTS | |||
| 115 | LPVOID pvBAFunctionsProcContext; | 116 | LPVOID pvBAFunctionsProcContext; |
| 116 | }; | 117 | }; |
| 117 | 118 | ||
| 119 | struct BA_FUNCTIONS_ONTHEMECONTROLLOADED_ARGS | ||
| 120 | { | ||
| 121 | DWORD cbSize; | ||
| 122 | LPCWSTR wzName; | ||
| 123 | WORD wId; | ||
| 124 | HWND hWnd; | ||
| 125 | }; | ||
| 126 | |||
| 127 | struct BA_FUNCTIONS_ONTHEMECONTROLLOADED_RESULTS | ||
| 128 | { | ||
| 129 | DWORD cbSize; | ||
| 130 | BOOL fProcessed; | ||
| 131 | }; | ||
| 132 | |||
| 118 | struct BA_FUNCTIONS_ONTHEMECONTROLLOADING_ARGS | 133 | struct BA_FUNCTIONS_ONTHEMECONTROLLOADING_ARGS |
| 119 | { | 134 | { |
| 120 | DWORD cbSize; | 135 | DWORD cbSize; |
diff --git a/src/api/burn/balutil/inc/BalBaseBAFunctions.h b/src/api/burn/balutil/inc/BalBaseBAFunctions.h index f6c33f58..d97df350 100644 --- a/src/api/burn/balutil/inc/BalBaseBAFunctions.h +++ b/src/api/burn/balutil/inc/BalBaseBAFunctions.h | |||
| @@ -874,6 +874,16 @@ public: // IBAFunctions | |||
| 874 | return S_OK; | 874 | return S_OK; |
| 875 | } | 875 | } |
| 876 | 876 | ||
| 877 | virtual STDMETHODIMP OnThemeControlLoaded( | ||
| 878 | __in LPCWSTR /*wzName*/, | ||
| 879 | __in WORD /*wId*/, | ||
| 880 | __in HWND /*hWnd*/, | ||
| 881 | __inout BOOL* /*pfProcessed*/ | ||
| 882 | ) | ||
| 883 | { | ||
| 884 | return S_OK; | ||
| 885 | } | ||
| 886 | |||
| 877 | protected: | 887 | protected: |
| 878 | CBalBaseBAFunctions( | 888 | CBalBaseBAFunctions( |
| 879 | __in HMODULE hModule, | 889 | __in HMODULE hModule, |
diff --git a/src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h b/src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h index 1d51c5b6..2af231e8 100644 --- a/src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h +++ b/src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h | |||
| @@ -51,6 +51,15 @@ static HRESULT BalBaseBAFunctionsProcOnThemeControlWmNotify( | |||
| 51 | return pBAFunctions->OnThemeControlWmNotify(pArgs->lParam, pArgs->wzName, pArgs->wId, pArgs->hWnd, &pResults->fProcessed, &pResults->lResult); | 51 | return pBAFunctions->OnThemeControlWmNotify(pArgs->lParam, pArgs->wzName, pArgs->wId, pArgs->hWnd, &pResults->fProcessed, &pResults->lResult); |
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | static HRESULT BalBaseBAFunctionsProcOnThemeControlLoaded( | ||
| 55 | __in IBAFunctions* pBAFunctions, | ||
| 56 | __in BA_FUNCTIONS_ONTHEMECONTROLLOADED_ARGS* pArgs, | ||
| 57 | __inout BA_FUNCTIONS_ONTHEMECONTROLLOADED_RESULTS* pResults | ||
| 58 | ) | ||
| 59 | { | ||
| 60 | return pBAFunctions->OnThemeControlLoaded(pArgs->wzName, pArgs->wId, pArgs->hWnd, &pResults->fProcessed); | ||
| 61 | } | ||
| 62 | |||
| 54 | /******************************************************************* | 63 | /******************************************************************* |
| 55 | BalBaseBAFunctionsProc - requires pvContext to be of type IBAFunctions. | 64 | BalBaseBAFunctionsProc - requires pvContext to be of type IBAFunctions. |
| 56 | Provides a default mapping between the message based BAFunctions interface and | 65 | Provides a default mapping between the message based BAFunctions interface and |
| @@ -161,6 +170,9 @@ static HRESULT WINAPI BalBaseBAFunctionsProc( | |||
| 161 | case BA_FUNCTIONS_MESSAGE_ONTHEMECONTROLWMNOTIFY: | 170 | case BA_FUNCTIONS_MESSAGE_ONTHEMECONTROLWMNOTIFY: |
| 162 | hr = BalBaseBAFunctionsProcOnThemeControlWmNotify(pBAFunctions, reinterpret_cast<BA_FUNCTIONS_ONTHEMECONTROLWMNOTIFY_ARGS*>(pvArgs), reinterpret_cast<BA_FUNCTIONS_ONTHEMECONTROLWMNOTIFY_RESULTS*>(pvResults)); | 171 | hr = BalBaseBAFunctionsProcOnThemeControlWmNotify(pBAFunctions, reinterpret_cast<BA_FUNCTIONS_ONTHEMECONTROLWMNOTIFY_ARGS*>(pvArgs), reinterpret_cast<BA_FUNCTIONS_ONTHEMECONTROLWMNOTIFY_RESULTS*>(pvResults)); |
| 163 | break; | 172 | break; |
| 173 | case BA_FUNCTIONS_MESSAGE_ONTHEMECONTROLLOADED: | ||
| 174 | hr = BalBaseBAFunctionsProcOnThemeControlLoaded(pBAFunctions, reinterpret_cast<BA_FUNCTIONS_ONTHEMECONTROLLOADED_ARGS*>(pvArgs), reinterpret_cast<BA_FUNCTIONS_ONTHEMECONTROLLOADED_RESULTS*>(pvResults)); | ||
| 175 | break; | ||
| 164 | } | 176 | } |
| 165 | } | 177 | } |
| 166 | 178 | ||
diff --git a/src/api/burn/balutil/inc/IBAFunctions.h b/src/api/burn/balutil/inc/IBAFunctions.h index 63395e1e..2e71608d 100644 --- a/src/api/burn/balutil/inc/IBAFunctions.h +++ b/src/api/burn/balutil/inc/IBAFunctions.h | |||
| @@ -61,4 +61,13 @@ DECLARE_INTERFACE_IID_(IBAFunctions, IBootstrapperApplication, "0FB445ED-17BD-49 | |||
| 61 | __inout BOOL* pfProcessed, | 61 | __inout BOOL* pfProcessed, |
| 62 | __inout LRESULT* plResult | 62 | __inout LRESULT* plResult |
| 63 | ) = 0; | 63 | ) = 0; |
| 64 | |||
| 65 | // OnThemeControlLoaded - Called after a control was created for the theme. | ||
| 66 | // | ||
| 67 | STDMETHOD(OnThemeControlLoaded)( | ||
| 68 | __in LPCWSTR wzName, | ||
| 69 | __in WORD wId, | ||
| 70 | __in HWND hWnd, | ||
| 71 | __inout BOOL* pfProcessed | ||
| 72 | ) = 0; | ||
| 64 | }; | 73 | }; |
diff --git a/src/api/burn/balutil/inc/balutil.h b/src/api/burn/balutil/inc/balutil.h index 82fd1fe5..0c47301a 100644 --- a/src/api/burn/balutil/inc/balutil.h +++ b/src/api/burn/balutil/inc/balutil.h | |||
| @@ -11,6 +11,7 @@ extern "C" { | |||
| 11 | 11 | ||
| 12 | #define BalExitOnFailureSource(d, x, f, ...) if (FAILED(x)) { BalLogError(x, f, __VA_ARGS__); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } | 12 | #define BalExitOnFailureSource(d, x, f, ...) if (FAILED(x)) { BalLogError(x, f, __VA_ARGS__); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } |
| 13 | #define BalExitOnRootFailureSource(d, x, f, ...) if (FAILED(x)) { BalLogError(x, f, __VA_ARGS__); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } | 13 | #define BalExitOnRootFailureSource(d, x, f, ...) if (FAILED(x)) { BalLogError(x, f, __VA_ARGS__); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } |
| 14 | #define BalExitWithRootFailureSource(d, x, e, f, ...) { x = FAILED(e) ? e : E_FAIL; BalLogError(x, f, __VA_ARGS__); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } | ||
| 14 | #define BalExitOnLastErrorSource(d, x, f, ...) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { BalLogError(x, f, __VA_ARGS__); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } } | 15 | #define BalExitOnLastErrorSource(d, x, f, ...) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { BalLogError(x, f, __VA_ARGS__); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } } |
| 15 | #define BalExitOnNullSource(d, p, x, e, f, ...) if (NULL == p) { x = e; BalLogError(x, f, __VA_ARGS__); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } | 16 | #define BalExitOnNullSource(d, p, x, e, f, ...) if (NULL == p) { x = e; BalLogError(x, f, __VA_ARGS__); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } |
| 16 | #define BalExitOnNullWithLastErrorSource(d, p, x, f, ...) if (NULL == p) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } BalLogError(x, f, __VA_ARGS__); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } | 17 | #define BalExitOnNullWithLastErrorSource(d, p, x, f, ...) if (NULL == p) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } BalLogError(x, f, __VA_ARGS__); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } |
| @@ -18,6 +19,7 @@ extern "C" { | |||
| 18 | 19 | ||
| 19 | #define BalExitOnFailure(x, f, ...) BalExitOnFailureSource(DUTIL_SOURCE_DEFAULT, x, f, __VA_ARGS__) | 20 | #define BalExitOnFailure(x, f, ...) BalExitOnFailureSource(DUTIL_SOURCE_DEFAULT, x, f, __VA_ARGS__) |
| 20 | #define BalExitOnRootFailure(x, f, ...) BalExitOnRootFailureSource(DUTIL_SOURCE_DEFAULT, x, f, __VA_ARGS__) | 21 | #define BalExitOnRootFailure(x, f, ...) BalExitOnRootFailureSource(DUTIL_SOURCE_DEFAULT, x, f, __VA_ARGS__) |
| 22 | #define BalExitWithRootFailure(x, e, f, ...) BalExitWithRootFailureSource(DUTIL_SOURCE_DEFAULT, x, e, f, __VA_ARGS__) | ||
| 21 | #define BalExitOnLastError(x, f, ...) BalExitOnLastErrorSource(DUTIL_SOURCE_DEFAULT, x, f, __VA_ARGS__) | 23 | #define BalExitOnLastError(x, f, ...) BalExitOnLastErrorSource(DUTIL_SOURCE_DEFAULT, x, f, __VA_ARGS__) |
| 22 | #define BalExitOnNull(p, x, e, f, ...) BalExitOnNullSource(DUTIL_SOURCE_DEFAULT, p, x, e, f, __VA_ARGS__) | 24 | #define BalExitOnNull(p, x, e, f, ...) BalExitOnNullSource(DUTIL_SOURCE_DEFAULT, p, x, e, f, __VA_ARGS__) |
| 23 | #define BalExitOnNullWithLastError(p, x, f, ...) BalExitOnNullWithLastErrorSource(DUTIL_SOURCE_DEFAULT, p, x, f, __VA_ARGS__) | 25 | #define BalExitOnNullWithLastError(p, x, f, ...) BalExitOnNullWithLastErrorSource(DUTIL_SOURCE_DEFAULT, p, x, f, __VA_ARGS__) |
diff --git a/src/api/burn/bextutil/inc/bextutil.h b/src/api/burn/bextutil/inc/bextutil.h index ac9c0062..facaf2e8 100644 --- a/src/api/burn/bextutil/inc/bextutil.h +++ b/src/api/burn/bextutil/inc/bextutil.h | |||
| @@ -11,6 +11,7 @@ extern "C" { | |||
| 11 | 11 | ||
| 12 | #define BextExitOnFailureSource(d, x, f, ...) if (FAILED(x)) { BextLogError(x, f, __VA_ARGS__); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } | 12 | #define BextExitOnFailureSource(d, x, f, ...) if (FAILED(x)) { BextLogError(x, f, __VA_ARGS__); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } |
| 13 | #define BextExitOnRootFailureSource(d, x, f, ...) if (FAILED(x)) { BextLogError(x, f, __VA_ARGS__); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } | 13 | #define BextExitOnRootFailureSource(d, x, f, ...) if (FAILED(x)) { BextLogError(x, f, __VA_ARGS__); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } |
| 14 | #define BextExitWithRootFailureSource(d, x, e, f, ...) { x = FAILED(e) ? e : E_FAIL; BextLogError(x, f, __VA_ARGS__); Dutil_RootFailure(__FILE__, __LINE__, x); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } | ||
| 14 | #define BextExitOnLastErrorSource(d, x, f, ...) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { BextLogError(x, f, __VA_ARGS__); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } } | 15 | #define BextExitOnLastErrorSource(d, x, f, ...) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { BextLogError(x, f, __VA_ARGS__); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } } |
| 15 | #define BextExitOnNullSource(d, p, x, e, f, ...) if (NULL == p) { x = e; BextLogError(x, f, __VA_ARGS__); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } | 16 | #define BextExitOnNullSource(d, p, x, e, f, ...) if (NULL == p) { x = e; BextLogError(x, f, __VA_ARGS__); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } |
| 16 | #define BextExitOnNullWithLastErrorSource(d, p, x, f, ...) if (NULL == p) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } BextLogError(x, f, __VA_ARGS__); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } | 17 | #define BextExitOnNullWithLastErrorSource(d, p, x, f, ...) if (NULL == p) { DWORD Dutil_er = ::GetLastError(); x = HRESULT_FROM_WIN32(Dutil_er); if (!FAILED(x)) { x = E_FAIL; } BextLogError(x, f, __VA_ARGS__); ExitTraceSource(d, x, f, __VA_ARGS__); goto LExit; } |
| @@ -18,6 +19,7 @@ extern "C" { | |||
| 18 | 19 | ||
| 19 | #define BextExitOnFailure(x, f, ...) BextExitOnFailureSource(DUTIL_SOURCE_DEFAULT, x, f, __VA_ARGS__) | 20 | #define BextExitOnFailure(x, f, ...) BextExitOnFailureSource(DUTIL_SOURCE_DEFAULT, x, f, __VA_ARGS__) |
| 20 | #define BextExitOnRootFailure(x, f, ...) BextExitOnRootFailureSource(DUTIL_SOURCE_DEFAULT, x, f, __VA_ARGS__) | 21 | #define BextExitOnRootFailure(x, f, ...) BextExitOnRootFailureSource(DUTIL_SOURCE_DEFAULT, x, f, __VA_ARGS__) |
| 22 | #define BextExitWithRootFailure(x, e, f, ...) BextExitWithRootFailureSource(DUTIL_SOURCE_DEFAULT, x, e, f, __VA_ARGS__) | ||
| 21 | #define BextExitOnLastError(x, f, ...) BextExitOnLastErrorSource(DUTIL_SOURCE_DEFAULT, x, f, __VA_ARGS__) | 23 | #define BextExitOnLastError(x, f, ...) BextExitOnLastErrorSource(DUTIL_SOURCE_DEFAULT, x, f, __VA_ARGS__) |
| 22 | #define BextExitOnNull(p, x, e, f, ...) BextExitOnNullSource(DUTIL_SOURCE_DEFAULT, p, x, e, f, __VA_ARGS__) | 24 | #define BextExitOnNull(p, x, e, f, ...) BextExitOnNullSource(DUTIL_SOURCE_DEFAULT, p, x, e, f, __VA_ARGS__) |
| 23 | #define BextExitOnNullWithLastError(p, x, f, ...) BextExitOnNullWithLastErrorSource(DUTIL_SOURCE_DEFAULT, p, x, f, __VA_ARGS__) | 25 | #define BextExitOnNullWithLastError(p, x, f, ...) BextExitOnNullWithLastErrorSource(DUTIL_SOURCE_DEFAULT, p, x, f, __VA_ARGS__) |
