]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | * wxuxthem.h : wxWindows support for Microsoft Windows XP Theme library | |
3 | * (uxtheme.dll) | |
4 | * Modified to work with almost all Win32 compilers | |
5 | * Compiler must support Unicode, the __cdecl calling convention, and the | |
6 | * __stdcall calling convention | |
7 | */ | |
8 | ||
9 | #ifndef _WX_UXTHEME_H_ | |
10 | #define _WX_UXTHEME_H_ | |
11 | ||
12 | #ifdef __GNUG__ | |
13 | #pragma interface "uxtheme.cpp" | |
14 | #endif | |
15 | ||
16 | // Use wxModule approach to initialization. | |
17 | #define WXU_USE_WXMODULE 1 | |
18 | ||
19 | #if wxUSE_UNICODE | |
20 | typedef struct _WXUOSVERSIONINFOEXW { | |
21 | WXDWORD dwOSVersionInfoSize; | |
22 | WXDWORD dwMajorVersion; | |
23 | WXDWORD dwMinorVersion; | |
24 | WXDWORD dwBuildNumber; | |
25 | WXDWORD dwPlatformId; | |
26 | wchar_t szCSDVersion[ 128 ]; // Maintenance string for PSS usage | |
27 | unsigned short wServicePackMajor; | |
28 | unsigned short wServicePackMinor; | |
29 | unsigned short wSuiteMask; | |
30 | unsigned char wProductType; | |
31 | unsigned char wReserved; | |
32 | } WXUOSVERSIONINFOEXW, *PWXUOSVERSIONINFOEXW, *LPWXUOSVERSIONINFOEXW; | |
33 | #define WXUOSVERSIONINFOEX WXUOSVERSIONINFOEXW | |
34 | #define PWXUOSVERSIONINFOEX PWXUOSVERSIONINFOEXW | |
35 | #define LPWXUOSVERSIONINFOEX LPWXUOSVERSIONINFOEXW | |
36 | #else | |
37 | typedef struct _WXUOSVERSIONINFOEXA { | |
38 | WXDWORD dwOSVersionInfoSize; | |
39 | WXDWORD dwMajorVersion; | |
40 | WXDWORD dwMinorVersion; | |
41 | WXDWORD dwBuildNumber; | |
42 | WXDWORD dwPlatformId; | |
43 | char szCSDVersion [128]; // Maintenance string for PSS usage | |
44 | unsigned short wServicePackMajor; | |
45 | unsigned short wServicePackMinor; | |
46 | unsigned short wSuiteMask; | |
47 | unsigned char wProductType; | |
48 | unsigned char wReserved; | |
49 | } WXUOSVERSIONINFOEXA, *PWXUOSVERSIONINFOEXA, *LPWXUOSVERSIONINFOEXA; | |
50 | #define WXUOSVERSIONINFOEX WXUOSVERSIONINFOEXA | |
51 | #define PWXUOSVERSIONINFOEX PWXUOSVERSIONINFOEXA | |
52 | #define LPWXUOSVERSIONINFOEX LPWXUOSVERSIONINFOEXA | |
53 | #endif | |
54 | ||
55 | typedef int WXUBOOL ; | |
56 | ||
57 | typedef struct tagWXURECT | |
58 | { | |
59 | long left; | |
60 | long top; | |
61 | long right; | |
62 | long bottom; | |
63 | } WXURECT ; | |
64 | ||
65 | typedef void* WXHTHEME; | |
66 | typedef long WXUHRESULT; | |
67 | typedef WXHTHEME (__stdcall *PFNWXUOPENTHEMEDATA)(WXHWND, const wchar_t *) ; | |
68 | typedef WXUHRESULT (__stdcall *PFNWXUCLOSETHEMEDATA)(WXHTHEME) ; | |
69 | typedef WXUHRESULT (__stdcall *PFNWXUDRAWTHEMEBACKGROUND)(WXHTHEME, WXHDC, | |
70 | int, int, const WXURECT *, const WXURECT *) ; | |
71 | #define WXU_DTT_GRAYED 0x1 | |
72 | typedef WXUHRESULT (__stdcall *PFNWXUDRAWTHEMETEXT)(WXHTHEME, WXHDC, int, | |
73 | int, const wchar_t *, int, DWORD, | |
74 | DWORD, const WXURECT *) ; | |
75 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEBACKGROUNDCONTENTRECT)(WXHTHEME, WXHDC, | |
76 | int, int, const WXURECT *, WXURECT *) ; | |
77 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEBACKGROUNDEXTENT)(WXHTHEME, WXHDC, int, int, | |
78 | const WXURECT *, WXURECT *) ; | |
79 | ||
80 | enum WXUTHEMESIZE | |
81 | { | |
82 | WXU_TS_MIN, // minimum size | |
83 | WXU_TS_TRUE, // size without stretching | |
84 | WXU_TS_DRAW // size that theme mgr will use to draw part | |
85 | }; | |
86 | ||
87 | typedef struct tagWXUSIZE | |
88 | { | |
89 | long cx; | |
90 | long cy; | |
91 | } WXUSIZE ; | |
92 | ||
93 | typedef struct tagWXUTEXTMETRIC | |
94 | { | |
95 | long tmHeight; | |
96 | long tmAscent; | |
97 | long tmDescent; | |
98 | long tmInternalLeading; | |
99 | long tmExternalLeading; | |
100 | long tmAveCharWidth; | |
101 | long tmMaxCharWidth; | |
102 | long tmWeight; | |
103 | long tmOverhang; | |
104 | long tmDigitizedAspectX; | |
105 | long tmDigitizedAspectY; | |
106 | wchar_t tmFirstChar; | |
107 | wchar_t tmLastChar; | |
108 | wchar_t tmDefaultChar; | |
109 | wchar_t tmBreakChar; | |
110 | unsigned char tmItalic; | |
111 | unsigned char tmUnderlined; | |
112 | unsigned char tmStruckOut; | |
113 | unsigned char tmPitchAndFamily; | |
114 | unsigned char tmCharSet; | |
115 | } WXUTEXTMETRIC; | |
116 | ||
117 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEPARTSIZE)(WXHTHEME, WXHDC, int, int, const WXURECT *, | |
118 | enum WXUTHEMESIZE, WXUSIZE *) ; | |
119 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMETEXTEXTENT)(WXHTHEME, WXHDC, int, int, const wchar_t *, | |
120 | int, WXDWORD, const WXURECT *, WXURECT *) ; | |
121 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMETEXTMETRICS)(WXHTHEME, WXHDC, | |
122 | int, int, WXUTEXTMETRIC*); | |
123 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEBACKGROUNDREGION)(WXHTHEME, WXHDC, | |
124 | int, int, const WXURECT *, WXHRGN *) ; | |
125 | ||
126 | #define WXU_HTTB_BACKGROUNDSEG 0x0000 | |
127 | #define WXU_HTTB_FIXEDBORDER 0x0002 | |
128 | #define WXU_HTTB_CAPTION 0x0004 | |
129 | #define WXU_HTTB_RESIZINGBORDER_LEFT 0x0010 | |
130 | #define WXU_HTTB_RESIZINGBORDER_TOP 0x0020 | |
131 | #define WXU_HTTB_RESIZINGBORDER_RIGHT 0x0040 | |
132 | #define WXU_HTTB_RESIZINGBORDER_BOTTOM 0x0080 | |
133 | #define WXU_HTTB_RESIZINGBORDER 0x00F0 | |
134 | #define WXU_HTTB_SIZINGTEMPLATE 0x0100 | |
135 | #define WXU_HTTB_SYSTEMSIZINGMARGINS 0x0200 | |
136 | ||
137 | typedef struct tagWXUPOINT | |
138 | { | |
139 | long x; | |
140 | long y; | |
141 | } WXUPOINT ; | |
142 | ||
143 | typedef WXUHRESULT (__stdcall *PFNWXUHITTESTTHEMEBACKGROUND)(WXHTHEME, WXHDC, int, | |
144 | int, WXDWORD, const WXURECT *, WXHRGN, | |
145 | WXUPOINT, unsigned short *) ; | |
146 | typedef WXUHRESULT (__stdcall *PFNWXUDRAWTHEMEEDGE)(WXHTHEME, WXHDC, int, int, | |
147 | const WXURECT *, unsigned int, unsigned int, WXURECT *); | |
148 | typedef WXUHRESULT (__stdcall *PFNWXUDRAWTHEMEICON)(WXHTHEME, WXHDC, int, int, | |
149 | const WXURECT *, WXHIMAGELIST, int) ; | |
150 | typedef WXUBOOL (__stdcall *PFNWXUISTHEMEPARTDEFINED)(WXHTHEME, int, int) ; | |
151 | typedef WXUBOOL (__stdcall *PFNWXUISTHEMEBACKGROUNDPARTIALLYTRANSPARENT)(WXHTHEME, int, int) ; | |
152 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMECOLOR)(WXHTHEME, int, int, int, WXCOLORREF*) ; | |
153 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEMETRIC)(WXHTHEME, WXHDC, int, | |
154 | int, int, int *) ; | |
155 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMESTRING)(WXHTHEME, int, | |
156 | int, int, wchar_t *, int) ; | |
157 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEBOOL)(WXHTHEME, int, int, int, WXUBOOL *) ; | |
158 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEINT)(WXHTHEME, int, int, int, int *) ; | |
159 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEENUMVALUE)(WXHTHEME, int, int, int, int *) ; | |
160 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEPOSITION)(WXHTHEME, int, int, int, WXUPOINT *) ; | |
161 | typedef struct tagWXULOGFONT | |
162 | { | |
163 | long lfHeight; | |
164 | long lfWidth; | |
165 | long lfEscapement; | |
166 | long lfOrientation; | |
167 | long lfWeight; | |
168 | unsigned char lfItalic; | |
169 | unsigned char lfUnderline; | |
170 | unsigned char lfStrikeOut; | |
171 | unsigned char lfCharSet; | |
172 | unsigned char lfOutPrecision; | |
173 | unsigned char lfClipPrecision; | |
174 | unsigned char lfQuality; | |
175 | unsigned char lfPitchAndFamily; | |
176 | wchar_t lfFaceName[32]; | |
177 | } WXULOGFONT ; | |
178 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEFONT)(WXHTHEME, WXHDC, int, int, int, WXULOGFONT *) ; | |
179 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMERECT)(WXHTHEME, int, int, int, WXURECT *) ; | |
180 | typedef struct _WXUMARGINS | |
181 | { | |
182 | int cxLeftWidth; // width of left border that retains its size | |
183 | int cxRightWidth; // width of right border that retains its size | |
184 | int cyTopHeight; // height of top border that retains its size | |
185 | int cyBottomHeight; // height of bottom border that retains its size | |
186 | } WXUMARGINS, *PWXUMARGINS; | |
187 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEMARGINS)(WXHTHEME, WXHDC, int, | |
188 | int, int, WXURECT *, WXUMARGINS *) ; | |
189 | ||
190 | #define WXU_MAX_INTLIST_COUNT 10 | |
191 | typedef struct _WXUINTLIST | |
192 | { | |
193 | int iValueCount; // number of values in iValues | |
194 | int iValues[WXU_MAX_INTLIST_COUNT]; | |
195 | } WXUINTLIST, *PWXUINTLIST; | |
196 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEINTLIST)(WXHTHEME, int, | |
197 | int, int, WXUINTLIST*) ; | |
198 | ||
199 | enum WXUPROPERTYORIGIN | |
200 | { | |
201 | WXU_PO_STATE, // property was found in the state section | |
202 | WXU_PO_PART, // property was found in the part section | |
203 | WXU_PO_CLASS, // property was found in the class section | |
204 | WXU_PO_GLOBAL, // property was found in [globals] section | |
205 | WXU_PO_NOTFOUND // property was not found | |
206 | }; | |
207 | ||
208 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEPROPERTYORIGIN)(WXHTHEME, int, | |
209 | int, int, enum WXUPROPERTYORIGIN *) ; | |
210 | typedef WXUHRESULT (__stdcall *PFNWXUSETWINDOWTHEME)(WXHWND, const wchar_t*, const wchar_t *) ; | |
211 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEFILENAME)(WXHTHEME, int, int, int, wchar_t *, int) ; | |
212 | typedef WXCOLORREF (__stdcall *PFNWXUGETTHEMESYSCOLOR)(WXHTHEME, int) ; | |
213 | typedef WXHBRUSH (__stdcall *PFNWXUGETTHEMESYSCOLORBRUSH)(WXHTHEME, int) ; | |
214 | typedef WXUBOOL (__stdcall *PFNWXUGETTHEMESYSBOOL)(WXHTHEME, int) ; | |
215 | typedef int (__stdcall *PFNWXUGETTHEMESYSSIZE)(WXHTHEME, int) ; | |
216 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMESYSFONT)(WXHTHEME, int, WXULOGFONT *) ; | |
217 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMESYSSTRING)(WXHTHEME, int, wchar_t *, int) ; | |
218 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMESYSINT)(WXHTHEME, int, int *) ; | |
219 | typedef WXUBOOL (__stdcall *PFNWXUISTHEMEACTIVE)() ; | |
220 | typedef WXUBOOL (__stdcall *PFNWXUISAPPTHEMED)() ; | |
221 | typedef WXHTHEME (__stdcall *PFNWXUGETWINDOWTHEME)(WXHWND) ; | |
222 | ||
223 | #define WXU_ETDT_DISABLE 0x00000001 | |
224 | #define WXU_ETDT_ENABLE 0x00000002 | |
225 | #define WXU_ETDT_USETABTEXTURE 0x00000004 | |
226 | #define WXU_ETDT_ENABLETAB 0x00000006 | |
227 | ||
228 | typedef WXUHRESULT (__stdcall *PFNWXUENABLETHEMEDIALOGTEXTURE)(WXHWND, WXDWORD) ; | |
229 | typedef WXUBOOL (__stdcall *PFNWXUISTHEMEDIALOGTEXTUREENABLED)(WXHWND) ; | |
230 | ||
231 | #define WXU_STAP_ALLOW_NONCLIENT 1 | |
232 | #define WXU_STAP_ALLOW_CONTROLS 2 | |
233 | #define WXU_STAP_ALLOW_WEBCONTENT 4 | |
234 | ||
235 | typedef WXDWORD (__stdcall *PFNWXUGETTHEMEAPPPROPERTIES)() ; | |
236 | typedef void (__stdcall *PFNWXUSETTHEMEAPPPROPERTIES)(WXDWORD) ; | |
237 | typedef WXUHRESULT (__stdcall *PFNWXUGETCURRENTTHEMENAME)(wchar_t *, int, | |
238 | wchar_t *, int, wchar_t *, int) ; | |
239 | ||
240 | #define WXU_SZ_THDOCPROP_DISPLAYNAME L"DisplayName" | |
241 | #define WXU_SZ_THDOCPROP_CANONICALNAME L"ThemeName" | |
242 | #define WXU_SZ_THDOCPROP_TOOLTIP L"ToolTip" | |
243 | #define WXU_SZ_THDOCPROP_AUTHOR L"author" | |
244 | ||
245 | typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEDOCUMENTATIONPROPERTY)(const wchar_t *, | |
246 | const wchar_t *, wchar_t *, int) ; | |
247 | typedef WXUHRESULT (__stdcall *PFNWXUDRAWTHEMEPARENTBACKGROUND)(WXHWND, WXHDC, WXURECT *) ; | |
248 | typedef WXUHRESULT (__stdcall *PFNWXUENABLETHEMING)(WXUBOOL) ; | |
249 | ||
250 | class WXDLLEXPORT wxUxThemeEngine | |
251 | { | |
252 | private: | |
253 | wxUxThemeEngine() ; | |
254 | ||
255 | public: | |
256 | ~wxUxThemeEngine() ; | |
257 | bool IsInitialized() const { return m_bIsInitialized ; } | |
258 | ||
259 | private: | |
260 | bool m_bIsInitialized ; | |
261 | HINSTANCE m_hInstUXThemeDLL ; | |
262 | ||
263 | public: | |
264 | static wxUxThemeEngine* wxInitUxThemeEngine() ; | |
265 | static wxUxThemeEngine* Get() ; | |
266 | protected: | |
267 | void ResetFunctionPointers() ; | |
268 | public: | |
269 | PFNWXUOPENTHEMEDATA m_pfnOpenThemeData ; | |
270 | PFNWXUCLOSETHEMEDATA m_pfnCloseThemeData ; | |
271 | PFNWXUDRAWTHEMEBACKGROUND m_pfnDrawThemeBackground ; | |
272 | PFNWXUDRAWTHEMETEXT m_pfnDrawThemeText ; | |
273 | PFNWXUGETTHEMEBACKGROUNDCONTENTRECT m_pfnGetThemeBackgroundContentRect ; | |
274 | PFNWXUGETTHEMEBACKGROUNDEXTENT m_pfnGetThemeBackgroundExtent ; | |
275 | PFNWXUGETTHEMEPARTSIZE m_pfnGetThemePartSize ; | |
276 | PFNWXUGETTHEMETEXTEXTENT m_pfnGetThemeTextExtent ; | |
277 | PFNWXUGETTHEMETEXTMETRICS m_pfnGetThemeTextMetrics ; | |
278 | PFNWXUGETTHEMEBACKGROUNDREGION m_pfnGetThemeBackgroundRegion ; | |
279 | PFNWXUHITTESTTHEMEBACKGROUND m_pfnHitTestThemeBackground ; | |
280 | PFNWXUDRAWTHEMEEDGE m_pfnDrawThemeEdge ; | |
281 | PFNWXUDRAWTHEMEICON m_pfnDrawThemeIcon ; | |
282 | PFNWXUISTHEMEPARTDEFINED m_pfnIsThemePartDefined ; | |
283 | PFNWXUISTHEMEBACKGROUNDPARTIALLYTRANSPARENT m_pfnIsThemeBackgroundPartiallyTransparent ; | |
284 | PFNWXUGETTHEMECOLOR m_pfnGetThemeColor ; | |
285 | PFNWXUGETTHEMEMETRIC m_pfnGetThemeMetric ; | |
286 | PFNWXUGETTHEMESTRING m_pfnGetThemeString ; | |
287 | PFNWXUGETTHEMEBOOL m_pfnGetThemeBool ; | |
288 | PFNWXUGETTHEMEINT m_pfnGetThemeInt ; | |
289 | PFNWXUGETTHEMEENUMVALUE m_pfnGetThemeEnumValue ; | |
290 | PFNWXUGETTHEMEPOSITION m_pfnGetThemePosition ; | |
291 | PFNWXUGETTHEMEFONT m_pfnGetThemeFont ; | |
292 | PFNWXUGETTHEMERECT m_pfnGetThemeRect ; | |
293 | PFNWXUGETTHEMEMARGINS m_pfnGetThemeMargins ; | |
294 | PFNWXUGETTHEMEINTLIST m_pfnGetThemeIntList ; | |
295 | PFNWXUGETTHEMEPROPERTYORIGIN m_pfnGetThemePropertyOrigin ; | |
296 | PFNWXUSETWINDOWTHEME m_pfnSetWindowTheme ; | |
297 | PFNWXUGETTHEMEFILENAME m_pfnGetThemeFilename ; | |
298 | PFNWXUGETTHEMESYSCOLOR m_pfnGetThemeSysColor ; | |
299 | PFNWXUGETTHEMESYSCOLORBRUSH m_pfnGetThemeSysColorBrush ; | |
300 | PFNWXUGETTHEMESYSBOOL m_pfnGetThemeSysBool ; | |
301 | PFNWXUGETTHEMESYSSIZE m_pfnGetThemeSysSize ; | |
302 | PFNWXUGETTHEMESYSFONT m_pfnGetThemeSysFont ; | |
303 | PFNWXUGETTHEMESYSSTRING m_pfnGetThemeSysString ; | |
304 | PFNWXUGETTHEMESYSINT m_pfnGetThemeSysInt ; | |
305 | PFNWXUISTHEMEACTIVE m_pfnIsThemeActive ; | |
306 | PFNWXUISAPPTHEMED m_pfnIsAppThemed ; | |
307 | PFNWXUGETWINDOWTHEME m_pfnGetWindowTheme ; | |
308 | PFNWXUENABLETHEMEDIALOGTEXTURE m_pfnEnableThemeDialogTexture ; | |
309 | PFNWXUISTHEMEDIALOGTEXTUREENABLED m_pfnIsThemeDialogTextureEnabled ; | |
310 | PFNWXUGETTHEMEAPPPROPERTIES m_pfnGetThemeAppProperties ; | |
311 | PFNWXUSETTHEMEAPPPROPERTIES m_pfnSetThemeAppProperties ; | |
312 | PFNWXUGETCURRENTTHEMENAME m_pfnGetCurrentThemeName ; | |
313 | PFNWXUGETTHEMEDOCUMENTATIONPROPERTY m_pfnGetThemeDocumentationProperty ; | |
314 | PFNWXUDRAWTHEMEPARENTBACKGROUND m_pfnDrawThemeParentBackground ; | |
315 | PFNWXUENABLETHEMING m_pfnEnableTheming ; | |
316 | }; | |
317 | ||
318 | WXDLLEXPORT_DATA(extern wxUxThemeEngine*) g_pThemeEngine ; | |
319 | ||
320 | WXDLLEXPORT BOOL wxCanUseInitThemeEngine() ; | |
321 | ||
322 | #if !defined(WXU_USE_WXMODULE) | |
323 | WXDLLEXPORT BOOL wxUxInitThemeEngine() ; | |
324 | #endif | |
325 | ||
326 | #endif | |
327 |