aboutsummaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-10-27 13:55:16 -0500
committerSean Hall <r.sean.hall@gmail.com>2021-11-01 16:34:09 -0500
commit8fa040da9d0d3826f5ffda6bcbec4f53abd97452 (patch)
treea8a1094f3ac17bd6feed8a6f971c0d6008694345 /src/api
parent4917383e6f52f0e44f63c60a645f1dd7e8f8d5f9 (diff)
downloadwix-8fa040da9d0d3826f5ffda6bcbec4f53abd97452.tar.gz
wix-8fa040da9d0d3826f5ffda6bcbec4f53abd97452.tar.bz2
wix-8fa040da9d0d3826f5ffda6bcbec4f53abd97452.zip
Allow more customization of control ids in thmutil.
Allow BAFunctions to set control ids. Make sure control ids don't collide.
Diffstat (limited to 'src/api')
-rw-r--r--src/api/burn/balutil/inc/BAFunctions.h18
-rw-r--r--src/api/burn/balutil/inc/BalBaseBAFunctions.h9
-rw-r--r--src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h12
-rw-r--r--src/api/burn/balutil/inc/IBAFunctions.h8
4 files changed, 47 insertions, 0 deletions
diff --git a/src/api/burn/balutil/inc/BAFunctions.h b/src/api/burn/balutil/inc/BAFunctions.h
index 43786701..2a34aaad 100644
--- a/src/api/burn/balutil/inc/BAFunctions.h
+++ b/src/api/burn/balutil/inc/BAFunctions.h
@@ -85,6 +85,7 @@ enum BA_FUNCTIONS_MESSAGE
85 85
86 BA_FUNCTIONS_MESSAGE_ONTHEMELOADED = 1024, 86 BA_FUNCTIONS_MESSAGE_ONTHEMELOADED = 1024,
87 BA_FUNCTIONS_MESSAGE_WNDPROC, 87 BA_FUNCTIONS_MESSAGE_WNDPROC,
88 BA_FUNCTIONS_MESSAGE_ONTHEMECONTROLLOADING,
88}; 89};
89 90
90typedef HRESULT(WINAPI *PFN_BA_FUNCTIONS_PROC)( 91typedef HRESULT(WINAPI *PFN_BA_FUNCTIONS_PROC)(
@@ -94,6 +95,10 @@ typedef HRESULT(WINAPI *PFN_BA_FUNCTIONS_PROC)(
94 __in_opt LPVOID pvContext 95 __in_opt LPVOID pvContext
95 ); 96 );
96 97
98// Should be the same as THEME_FIRST_ASSIGN_CONTROL_ID.
99// BAFunctions must only assign ids in the range [BAFUNCTIONS_FIRST_ASSIGN_CONTROL_ID, 0x8000) to avoid collisions.
100const WORD BAFUNCTIONS_FIRST_ASSIGN_CONTROL_ID = 0x4000;
101
97struct BA_FUNCTIONS_CREATE_ARGS 102struct BA_FUNCTIONS_CREATE_ARGS
98{ 103{
99 DWORD cbSize; 104 DWORD cbSize;
@@ -108,6 +113,19 @@ struct BA_FUNCTIONS_CREATE_RESULTS
108 LPVOID pvBAFunctionsProcContext; 113 LPVOID pvBAFunctionsProcContext;
109}; 114};
110 115
116struct BA_FUNCTIONS_ONTHEMECONTROLLOADING_ARGS
117{
118 DWORD cbSize;
119 LPCWSTR wzName;
120};
121
122struct BA_FUNCTIONS_ONTHEMECONTROLLOADING_RESULTS
123{
124 DWORD cbSize;
125 BOOL fProcessed;
126 WORD wId;
127};
128
111struct BA_FUNCTIONS_ONTHEMELOADED_ARGS 129struct BA_FUNCTIONS_ONTHEMELOADED_ARGS
112{ 130{
113 DWORD cbSize; 131 DWORD cbSize;
diff --git a/src/api/burn/balutil/inc/BalBaseBAFunctions.h b/src/api/burn/balutil/inc/BalBaseBAFunctions.h
index a3054709..c2c8a6dc 100644
--- a/src/api/burn/balutil/inc/BalBaseBAFunctions.h
+++ b/src/api/burn/balutil/inc/BalBaseBAFunctions.h
@@ -841,6 +841,15 @@ public: // IBAFunctions
841 return E_NOTIMPL; 841 return E_NOTIMPL;
842 } 842 }
843 843
844 virtual STDMETHODIMP OnThemeControlLoading(
845 __in LPCWSTR /*wzName*/,
846 __inout BOOL* /*pfProcessed*/,
847 __inout WORD* /*pwId*/
848 )
849 {
850 return S_OK;
851 }
852
844protected: 853protected:
845 CBalBaseBAFunctions( 854 CBalBaseBAFunctions(
846 __in HMODULE hModule, 855 __in HMODULE hModule,
diff --git a/src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h b/src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h
index 8d1227fc..efe22ddd 100644
--- a/src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h
+++ b/src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h
@@ -24,6 +24,15 @@ static HRESULT BalBaseBAFunctionsProcWndProc(
24 return pBAFunctions->WndProc(pArgs->pTheme, pArgs->hWnd, pArgs->uMsg, pArgs->wParam, pArgs->lParam, &pResults->lres); 24 return pBAFunctions->WndProc(pArgs->pTheme, pArgs->hWnd, pArgs->uMsg, pArgs->wParam, pArgs->lParam, &pResults->lres);
25} 25}
26 26
27static HRESULT BalBaseBAFunctionsProcOnThemeControlLoading(
28 __in IBAFunctions* pBAFunctions,
29 __in BA_FUNCTIONS_ONTHEMECONTROLLOADING_ARGS* pArgs,
30 __inout BA_FUNCTIONS_ONTHEMECONTROLLOADING_RESULTS* pResults
31 )
32{
33 return pBAFunctions->OnThemeControlLoading(pArgs->wzName, &pResults->fProcessed, &pResults->wId);
34}
35
27/******************************************************************* 36/*******************************************************************
28BalBaseBAFunctionsProc - requires pvContext to be of type IBAFunctions. 37BalBaseBAFunctionsProc - requires pvContext to be of type IBAFunctions.
29Provides a default mapping between the message based BAFunctions interface and 38Provides a default mapping between the message based BAFunctions interface and
@@ -125,6 +134,9 @@ static HRESULT WINAPI BalBaseBAFunctionsProc(
125 case BA_FUNCTIONS_MESSAGE_WNDPROC: 134 case BA_FUNCTIONS_MESSAGE_WNDPROC:
126 hr = BalBaseBAFunctionsProcWndProc(pBAFunctions, reinterpret_cast<BA_FUNCTIONS_WNDPROC_ARGS*>(pvArgs), reinterpret_cast<BA_FUNCTIONS_WNDPROC_RESULTS*>(pvResults)); 135 hr = BalBaseBAFunctionsProcWndProc(pBAFunctions, reinterpret_cast<BA_FUNCTIONS_WNDPROC_ARGS*>(pvArgs), reinterpret_cast<BA_FUNCTIONS_WNDPROC_RESULTS*>(pvResults));
127 break; 136 break;
137 case BA_FUNCTIONS_MESSAGE_ONTHEMECONTROLLOADING:
138 hr = BalBaseBAFunctionsProcOnThemeControlLoading(pBAFunctions, reinterpret_cast<BA_FUNCTIONS_ONTHEMECONTROLLOADING_ARGS*>(pvArgs), reinterpret_cast<BA_FUNCTIONS_ONTHEMECONTROLLOADING_RESULTS*>(pvResults));
139 break;
128 } 140 }
129 } 141 }
130 142
diff --git a/src/api/burn/balutil/inc/IBAFunctions.h b/src/api/burn/balutil/inc/IBAFunctions.h
index 7d8a07fa..d41b7c9b 100644
--- a/src/api/burn/balutil/inc/IBAFunctions.h
+++ b/src/api/burn/balutil/inc/IBAFunctions.h
@@ -31,4 +31,12 @@ DECLARE_INTERFACE_IID_(IBAFunctions, IBootstrapperApplication, "0FB445ED-17BD-49
31 __inout LPVOID pvResults, 31 __inout LPVOID pvResults,
32 __in_opt LPVOID pvContext 32 __in_opt LPVOID pvContext
33 ) = 0; 33 ) = 0;
34
35 // OnThemeControlLoading - Called while creating a control for the theme.
36 //
37 STDMETHOD(OnThemeControlLoading)(
38 __in LPCWSTR wzName,
39 __inout BOOL* pfProcessed,
40 __inout WORD* pwId
41 ) = 0;
34}; 42};