Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

524 lines
26 KiB

  1. //---------------------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //
  4. // File : uxthemep.h
  5. // Version: 1.0
  6. //---------------------------------------------------------------------------
  7. #ifndef _UXTHEMEP_H_
  8. #define _UXTHEMEP_H_
  9. //---------------------------------------------------------------------------
  10. #include <uxtheme.h>
  11. //---------------------------------------------------------------------------
  12. //---------------------------------------------------------------------------
  13. // The following routines are provided for use by Theme Selection UI.
  14. //---------------------------------------------------------------------------
  15. //---- bits returned by QueryThemeServices() ----
  16. #define QTS_AVAILABLE (1 << 0) // services are available
  17. #define QTS_RUNNING (1 << 1) // services are running
  18. //---------------------------------------------------------------------------
  19. // QueryThemeServices()
  20. // - returns flags about theme services (see above)
  21. //---------------------------------------------------------------------------
  22. THEMEAPI_(DWORD) QueryThemeServices();
  23. //---------------------------------------------------------------------------
  24. typedef HANDLE HTHEMEFILE; // handle to a loaded theme file
  25. //---------------------------------------------------------------------------
  26. // OpenThemeFile() - Load specified theme into memory (doesn't apply it)
  27. //
  28. // pszThemePath - full path of .msstyles file to load
  29. //
  30. // pszColorScheme - (optional) name of theme color scheme to load
  31. //
  32. // pszSize - (optional) name of theme size to load
  33. //
  34. // phThemeFile - if a theme is successfully opened, this handle
  35. // is set to a non-NULL value and holds a ref-count
  36. // on the theme to keep it in loaded in memory.
  37. //
  38. // fGlobalTheme - FALSE if it's a preview, TRUE if the theme is intended
  39. // to be made permanent for the user
  40. //---------------------------------------------------------------------------
  41. THEMEAPI OpenThemeFile(LPCWSTR pszThemePath, OPTIONAL LPCWSTR pszColorParam,
  42. OPTIONAL LPCWSTR pszSizeParam, OUT HTHEMEFILE *phThemeFile, BOOL fGlobalTheme);
  43. //---------------------------------------------------------------------------
  44. // CloseThemeFile() - decrements the ref-count for the theme identified
  45. // by the hThemeFile handle
  46. //
  47. // hThemeFile - open handle to the loaded theme file
  48. //---------------------------------------------------------------------------
  49. THEMEAPI CloseThemeFile(HTHEMEFILE hThemeFile);
  50. //---------------------------------------------------------------------------
  51. //--- WM_THEMECHANGED msg parameters (internal use only) ----
  52. //--- "wParam" is the "change number" ----
  53. //---- lParam bits ----
  54. #define WTC_THEMEACTIVE (1 << 0) // new theme is now active
  55. #define WTC_CUSTOMTHEME (1 << 1) // this msg for custom-themed apps
  56. //---------------------------------------------------------------------------
  57. //---- option flags for ApplyTheme() ----
  58. #define AT_LOAD_SYSMETRICS (1 << 0) // apply the theme's metrics w/theme
  59. // or default classic metrics when
  60. // turning themes off.
  61. #define AT_PROCESS (1 << 1) // apply to current process only
  62. #define AT_EXCLUDE (1 << 2) // all but the specified process/window
  63. #define AT_CACHETHEME (1 << 3) // cache this theme file, if applied
  64. #define AT_NOREGUPDATE (1 << 4) // don't update the CU registry for theme info
  65. #define AT_SYNC_LOADMETRICS (1 << 5) // load system metrics on calling thread
  66. //---- below flags currently not supported ----
  67. #define AT_DISABLE_FRAME_THEMING (1 << 10)
  68. #define AT_DISABLE_DIALOG_THEMING (1 << 11)
  69. //---------------------------------------------------------------------------
  70. // ApplyTheme() - Apply (or remove) a loaded theme file globally
  71. // or to specified apps/windows.
  72. //
  73. // Note that when a theme is applied globally
  74. // (hwndTarget is NULL), the theme services manager
  75. // will hold a refcount on the theme file. This
  76. // means that the caller can close his HTHEMEFILE
  77. // handle after the ApplyTheme() call.
  78. //
  79. // When the global theme is removed, the theme
  80. // services manager will drop is refcount.
  81. //
  82. // hThemeFile - (optional)handle to the loaded theme file.
  83. // if NULL then any theme on target app/windows
  84. // will be removed.
  85. //
  86. // dwApplyFlags - options for applying theme (see above)
  87. //
  88. // hwndTarget - (optional) only theme this window
  89. //---------------------------------------------------------------------------
  90. THEMEAPI ApplyTheme(OPTIONAL HTHEMEFILE hThemeFile, DWORD dwApplyFlags,
  91. OPTIONAL HWND hwndTarget);
  92. //---------------------------------------------------------------------------
  93. // SetSystemVisualStyle() - Securely loads and applies (or clears) a global theme.
  94. //
  95. // pszVisualStylesFile - full path of .msstyles file to load
  96. //
  97. // pszColorScheme - (optional) name of visual style color scheme to load
  98. //
  99. // pszSize - (optional) name of visual style size to load
  100. //
  101. //
  102. // dwApplyFlags - options for applying the visual style (see ApplyTheme above)
  103. //---------------------------------------------------------------------------
  104. THEMEAPI SetSystemVisualStyle(
  105. LPCWSTR pszVisualStylesFile,
  106. OPTIONAL LPCWSTR pszColorScheme,
  107. OPTIONAL LPCWSTR pszSize,
  108. DWORD dwApplyFlags );
  109. //---------------------------------------------------------------------------
  110. // RegisterDefaultTheme()
  111. // - registers the specified theme as the default
  112. // for all users on the system.
  113. //
  114. // pszThemeFileName - the name of the theme file (NULL = no theme)
  115. //
  116. // fOverride - if TRUE, will override current default theme
  117. //---------------------------------------------------------------------------
  118. THEMEAPI RegisterDefaultTheme(LPCWSTR pszFileName, BOOL fOverride);
  119. //---------------------------------------------------------------------------
  120. // THEMECALLBACK is a enum describing the type of callback being done
  121. //---------------------------------------------------------------------------
  122. typedef enum THEMECALLBACK
  123. {
  124. TCB_THEMENAME, // theme name enumeration
  125. TCB_COLORSCHEME, // color scheme enumeration
  126. TCB_SIZENAME, // size name enumeration
  127. TCB_SUBSTTABLE, // substitution table enumeration
  128. TCB_CDFILENAME, // classdata file name enumeration
  129. TCB_CDFILECOMBO, // classdata file color/size combinations
  130. TCB_FILENAME, // parsed a filename
  131. TCB_DOCPROPERTY, // parsed a standard doc property
  132. TCB_NEEDSUBST, // callback to get a substituted symbol
  133. TCB_MINCOLORDEPTH, // parsed the min color depth
  134. //---- localizable property callbacks ----
  135. TCB_FONT, // parsed a font string
  136. TCB_MIRRORIMAGE, // parsed the MirrorImage property
  137. TCB_LOCALIZABLE_RECT, // parsed a RECT property that needs to be localizable
  138. };
  139. //---------------------------------------------------------------------------
  140. typedef struct
  141. {
  142. WCHAR szName[MAX_PATH+1];
  143. WCHAR szDisplayName[MAX_PATH+1];
  144. WCHAR szToolTip[MAX_PATH+1];
  145. } THEMENAMEINFO;
  146. //---------------------------------------------------------------------------
  147. // THEMEENUMPROC() - callback used by the theme enum/parsing functions.
  148. // the return value is used to continue or abort
  149. // the enumeration.
  150. //
  151. // tcbType - callback type being made
  152. // pszName - simple name of the item being enumerated
  153. // pszName2 - varies by callback type
  154. // pszName3 - varies by callback type
  155. // iIndex - index number associated with some items
  156. // lParam - callback param supplied by caller
  157. //---------------------------------------------------------------------------
  158. typedef BOOL (CALLBACK* THEMEENUMPROC)(enum THEMECALLBACK tcbType,
  159. LPCWSTR pszName, OPTIONAL LPCWSTR pszName2,
  160. OPTIONAL LPCWSTR pszName3, OPTIONAL int iIndex, LPARAM lParam);
  161. //---------------------------------------------------------------------------
  162. // EnumThemes() - calls the callback function "lpEnumFunc" with each
  163. // theme. During the callback, the filename,
  164. // Display name, and tooltip string for each theme
  165. // are returned.
  166. //
  167. // pszThemeRoot - the theme root directory; each theme DLL found in
  168. // a separate subdir immediately under the theme root
  169. // dir is enumerated. The root name of the DLL must
  170. // match its containing subdir name
  171. //
  172. // lpEnumFunc - ptr to the caller's callback function which will
  173. // be called for each theme enumerated
  174. //
  175. // lParam - caller's callback parameter (will be passed to
  176. // lpEnumFunc())
  177. //---------------------------------------------------------------------------
  178. THEMEAPI EnumThemes(LPCWSTR pszThemeRoot, THEMEENUMPROC lpEnumFunc,
  179. LPARAM lParam);
  180. //---------------------------------------------------------------------------
  181. // EnumThemeSizes() - support direct enumeration of all available theme
  182. // sizes.
  183. //
  184. // pszThemeName - is the name of the theme file.
  185. // pszColorScheme - (optional) only sizes for this color are enum-ed
  186. // dwSizeIndex - 0-relative index of the size being queryed
  187. // ptn - ptr to struct to receive name strings
  188. //---------------------------------------------------------------------------
  189. THEMEAPI EnumThemeSizes(LPCWSTR pszThemeName,
  190. OPTIONAL LPCWSTR pszColorScheme, DWORD dwSizeIndex,
  191. OUT THEMENAMEINFO *ptn);
  192. //---------------------------------------------------------------------------
  193. // EnumThemeColors() - support direct enumeration of all available theme
  194. // color schemes.
  195. //
  196. // pszThemeName - name of the theme file.
  197. // pszSizeName - (optional) only colors for this size are enum-ed
  198. // dwColorIndex - 0-relative index of the color being queryed
  199. // ptn - ptr to struct to receive name strings
  200. //---------------------------------------------------------------------------
  201. THEMEAPI EnumThemeColors(LPCWSTR pszThemeName,
  202. OPTIONAL LPCWSTR pszSizeName, DWORD dwColorIndex,
  203. OUT THEMENAMEINFO *ptn);
  204. //---------------------------------------------------------------------------
  205. // GetThemeDefaults() - returns the default Color name and default Size
  206. // name for the specified theme file
  207. //
  208. // pszThemeName - name of the theme file
  209. //
  210. // pszDefaultColor - buffer to receive the default color name
  211. // (the canonical name, not the display version)
  212. // cchMaxColorChars - max chars that pszDefaultColor can contain
  213. //
  214. // pszDefaultSize - buffer to receive the default size name
  215. // (the canonical name, not the display version)
  216. // cchMaxSizeChars - max chars that pszDefaultSize can contain
  217. //---------------------------------------------------------------------------
  218. THEMEAPI GetThemeDefaults(LPCWSTR pszThemeName,
  219. OUT OPTIONAL LPWSTR pszDefaultColor, int cchMaxColorChars,
  220. OUT OPTIONAL LPWSTR pszDefaultSize, int cchMaxSizeChars);
  221. //---------------------------------------------------------------------------
  222. #define PTF_CONTAINER_PARSE 0x0001 // parse as a "themes.ini" file
  223. #define PTF_CLASSDATA_PARSE 0x0002 // parse as a "bigred.ini" classdata file
  224. #define PTF_CALLBACK_COLORSECTION 0x0004 // callback on all [colorscheme.xxx] sections
  225. #define PTF_CALLBACK_SIZESECTION 0x0008 // callback on all [size.xxx] sections
  226. #define PTF_CALLBACK_FILESECTION 0x0010 // callback on all [file.xxx] sections
  227. #define PTF_CALLBACK_FILENAMES 0x0020 // callback on all "filename=" properties
  228. #define PTF_CALLBACK_LOCALIZATIONS 0x0040 // callback on all localizable properties
  229. #define PTF_CALLBACK_DOCPROPERTIES 0x0080 // callback on all standard properties in [doc] section
  230. #define PTF_QUERY_DOCPROPERTY 0x0100 // query for value of specified property (internal)
  231. #define PTF_CALLBACK_SUBSTTABLE 0x0400 // callback on all [subst.xxx] sections
  232. #define PTF_CALLBACK_SUBSTSYMBOLS 0x0800 // callback on a substituted symbol (##)
  233. #define PTF_CALLBACK_MINCOLORDEPTH 0x1000 // callback on "MinColorDepth="
  234. //---------------------------------------------------------------------------
  235. // ParseThemeIniFile() - Parse the "themes.inc" file specified by
  236. // "pszFileName".
  237. // pzFileName - name of the theme.inc file to parse
  238. // dwParseFlags - flags that control parsing & callback options
  239. // pfnCallBack - ptr to caller-supplied callback function
  240. // lparam - caller's callback param
  241. //---------------------------------------------------------------------------
  242. THEMEAPI ParseThemeIniFile(LPCWSTR pszFileName, DWORD dwParseFlags,
  243. OPTIONAL THEMEENUMPROC pFnCallBack, OPTIONAL LPARAM lparam);
  244. //---------------------------------------------------------------------------
  245. #define THEME_PARSING_ERROR(hr) (SCODE_CODE(hr) == ERROR_UNKNOWN_PROPERTY)
  246. typedef struct _PARSE_ERROR_INFO
  247. {
  248. DWORD dwSize; // of this structure
  249. //---- last parse error info ----
  250. DWORD dwParseErrCode; // error code from last error
  251. WCHAR szMsg[2*MAX_PATH]; // value of first param for msg
  252. WCHAR szFileName[MAX_PATH]; // associated source filename
  253. WCHAR szSourceLine[MAX_PATH]; // source line
  254. int iLineNum; // source line number
  255. }
  256. PARSE_ERROR_INFO, *PPARSE_ERROR_INFO;
  257. //---------------------------------------------------------------------------
  258. // GetThemeParseErrorInfo()
  259. // - fill in the PARSE_ERROR_CONTEXT structure
  260. // with needed information about the last theme API
  261. // parse error.
  262. //
  263. // pInfo - ptr to the PARSE_ERROR_INFO to be filled
  264. //---------------------------------------------------------------------------
  265. THEMEAPI GetThemeParseErrorInfo(OUT PARSE_ERROR_INFO *pInfo);
  266. //---------------------------------------------------------------------------
  267. // resource base numbers for localizable string tables in a .msstyles file
  268. //---------------------------------------------------------------------------
  269. #define RES_BASENUM_COLORDISPLAYS 1000
  270. #define RES_BASENUM_COLORTOOLTIPS 2000
  271. #define RES_BASENUM_SIZEDISPLAYS 3000
  272. #define RES_BASENUM_SIZETOOLTIPS 4000
  273. #define RES_BASENUM_DOCPROPERTIES 5000 // in order shown in TmSchema.h
  274. #define RES_BASENUM_PROPVALUEPAIRS 6000 // property names & localizable values
  275. //---------------------------------------------------------------------------
  276. // DrawNCPreview() - Previews the theme for the NC area of a window
  277. //
  278. // hdc - HDC for preview to be draw into
  279. // prc - RECT for preview
  280. //
  281. //---------------------------------------------------------------------------
  282. #define NCPREV_INACTIVEWINDOW 0x00000001
  283. #define NCPREV_ACTIVEWINDOW 0x00000002
  284. #define NCPREV_MESSAGEBOX 0x00000004
  285. #define NCPREV_RTL 0x00000008
  286. THEMEAPI DrawNCPreview(HDC hdc, DWORD dwFlags, LPRECT prc, LPCWSTR pszVSPath,
  287. LPCWSTR pszVSColor, LPCWSTR pszVSSize, NONCLIENTMETRICS* pncm,
  288. COLORREF* prgb);
  289. //---------------------------------------------------------------------------
  290. // DumpLoadedThemeToTextFile()
  291. // - (for internal testing) dumps the contents of the
  292. // loaded theme file to the specified text file
  293. //
  294. // hThemeFile - the handle of the loaded theme file
  295. //
  296. // pszTextFile - path of the text file to create & write to
  297. //
  298. // fPacked - TRUE to dump packed objects; FALSE for normal
  299. // properties
  300. //
  301. // fFullInfo - includes sizes, offsets, paths, etc. Use FALSE
  302. // for info that will be DIFF-ed across builds/machines
  303. //---------------------------------------------------------------------------
  304. THEMEAPI DumpLoadedThemeToTextFile(HTHEMEFILE hThemeFile,
  305. LPCWSTR pszTextFile, BOOL fPacked, BOOL fFullInfo);
  306. #ifdef __cplusplus
  307. class CDrawBase; // forward
  308. class CTextDraw; // forward
  309. //---------------------------------------------------------------------------
  310. // CreateThemeDataFromObjects()
  311. // - creates a theme handle from a CBorderFill,
  312. // CImageFile, and/or CTextDraw object. At lease one
  313. // non-NULL ptr must be passed (either or both).
  314. //
  315. // pDrawObj - (optional) ptr to an object derived from CDrawBase
  316. // NOTE: if pDrawObj is a CImageFile ptr and its
  317. // "_pImageData" contains any alpha channel bitmaps,
  318. // the bits in those bitmaps will be "pre-multiplied"
  319. // for alpha blending.
  320. //
  321. // pTextObj - (optional) ptr to a CTextDraw object
  322. //
  323. // dwOtdFlags - theme override flags (see OpenThemeDataEx())
  324. //---------------------------------------------------------------------------
  325. THEMEAPI_(HTHEME) CreateThemeDataFromObjects(OPTIONAL CDrawBase *pDrawObj,
  326. OPTIONAL CTextDraw *pTextObj, DWORD dwOtdFlags);
  327. #endif
  328. //---------------------------------------------------------------------------
  329. // OpenThemeDataFromFile()
  330. // - Open the theme data for the specified loaded theme
  331. // file and semi-colon separated list of class names.
  332. // OpenThemeDataFromFile() will try each class name,
  333. // one at a time, and use the first matching theme info
  334. // found. If none match, "NULL" is returned.
  335. //
  336. // Note: normal controls should NOT use this API;
  337. // they should use "OpenThemeData()" (which uses the
  338. // current global or app theme).
  339. //
  340. // hLoadedThemeFile - handle to the loaded theme file.
  341. //
  342. // hwnd - (optional) hwnd to base the HTHEME on
  343. //
  344. // pszClassList - (optional) class name (or list of names) to match
  345. // to theme data section; if NULL, will get match
  346. // to [globals] section.
  347. //
  348. // fClient - TRUE if theming a client window with returned
  349. // HTHEME.
  350. //---------------------------------------------------------------------------
  351. THEMEAPI_(HTHEME) OpenThemeDataFromFile(HTHEMEFILE hLoadedThemeFile,
  352. OPTIONAL HWND hwnd, OPTIONAL LPCWSTR pszClassList, BOOL fClient);
  353. //---------------------------------------------------------------------------
  354. // OpenThemeFileFromData()
  355. // - Open the theme file corresponding to the HTHEME.
  356. //
  357. // hTheme - handle to the theme data from OpenThemeData().
  358. //
  359. // phThemeFile - ptr to return HTHEMEFILE to.
  360. //---------------------------------------------------------------------------
  361. THEMEAPI OpenThemeFileFromData(HTHEME hTheme, HTHEMEFILE *phThemeFile);
  362. //---------------------------------------------------------------------------
  363. // GetThemeSysSize96() - Get the value of the specified System size metric.
  364. // (original value authored for 96 dpi)
  365. //
  366. // hTheme - the theme data handle (required). Will return
  367. // size from [SysMetrics] section of theme.
  368. //
  369. // iSizeId - only the following sizes are supported:
  370. //
  371. // SM_CXBORDER (border width)
  372. // SM_CXVSCROLL (scrollbar width)
  373. // SM_CYHSCROLL (scrollbar height)
  374. // SM_CXSIZE (caption width)
  375. // SM_CYSIZE (caption height)
  376. // SM_CXSMSIZE (small caption width)
  377. // SM_CYSMSIZE (small caption height)
  378. // SM_CXMENUSIZE (menubar width)
  379. // SM_CYMENUSIZE (menubar height)
  380. //---------------------------------------------------------------------------
  381. THEMEAPI_(int) GetThemeSysSize96(HTHEME hTheme, int iSizeId);
  382. //---------------------------------------------------------------------------
  383. // GetThemeSysFont96() - Get the LOGFONT for the specified System font.
  384. // (original value authored for 96 dpi)
  385. //
  386. // hTheme - the theme data handle (required). Will return
  387. // size from [SysMetrics] section of theme.
  388. //
  389. // iFontId - the TMT_XXX font number (first font
  390. // is TMT_CAPTIONFONT)
  391. //
  392. // plf - ptr to LOGFONT to receive the font value.
  393. //---------------------------------------------------------------------------
  394. THEMEAPI GetThemeSysFont96(HTHEME hTheme, int iFontId, OUT LOGFONT *plf);
  395. //---------------------------------------------------------------------------
  396. // RefreshThemeForTS()
  397. // - turn themes on/off for current Terminal Server user
  398. //---------------------------------------------------------------------------
  399. THEMEAPI RefreshThemeForTS();
  400. //---------------------------------------------------------------------------
  401. //---- flag bits for OpenThemeDataEx() ----
  402. #define OTD_FORCE_RECT_SIZING 0x0001 // make all parts size to rect
  403. #define OTD_NONCLIENT 0x0002 // set if hTheme to be used for nonclient area
  404. //---------------------------------------------------------------------------
  405. // OpenThemeDataEx - Open the theme data for the specified HWND and
  406. // semi-colon separated list of class names.
  407. //
  408. // OpenThemeData() will try each class name, one at
  409. // a time, and use the first matching theme info
  410. // found. If a match is found, a theme handle
  411. // to the data is returned. If no match is found,
  412. // a "NULL" handle is returned.
  413. //
  414. // When the window is destroyed or a WM_THEMECHANGED
  415. // msg is received, "CloseThemeData()" should be
  416. // called to close the theme handle.
  417. //
  418. // hwnd - window handle of the control/window to be themed
  419. //
  420. // pszClassList - class name (or list of names) to match to theme data
  421. // section. if the list contains more than one name,
  422. // the names are tested one at a time for a match.
  423. // If a match is found, OpenThemeData() returns a
  424. // theme handle associated with the matching class.
  425. // This param is a list (instead of just a single
  426. // class name) to provide the class an opportunity
  427. // to get the "best" match between the class and
  428. // the current theme. For example, a button might
  429. // pass L"OkButton, Button" if its ID=ID_OK. If
  430. // the current theme has an entry for OkButton,
  431. // that will be used. Otherwise, we fall back on
  432. // the normal Button entry.
  433. //
  434. // dwFlags - allows certain overrides of std features
  435. // (see OTD_XXX defines above)
  436. //---------------------------------------------------------------------------
  437. THEMEAPI_(HTHEME) OpenThemeDataEx(HWND hwnd, LPCWSTR pszClassList, DWORD dwFlags);
  438. THEMEAPI CheckThemeSignature (LPCWSTR pszName);
  439. //---------------------------------------------------------------------------
  440. // ClassicGetSystemMetrics( int iMetric );
  441. //
  442. // ClassicSystemParametersInfoA( IN UINT uiAction, IN UINT uiParam,
  443. // IN OUT PVOID pvParam, IN UINT fWinIni);
  444. // ClassicSystemParametersInfoW( IN UINT uiAction, IN UINT uiParam,
  445. // IN OUT PVOID pvParam, IN UINT fWinIni);
  446. // ClassicAdjustWindowRectEx( IN LPRECT prcWnd, IN DWORD dwStyle, IN BOOL fMenu, IN DWORD dwExStyle );
  447. //
  448. // These exports correspond to their Win32 API counterparts and ensure that
  449. // the classic visual style metrics are retrieved. Theme hooks are shunted.
  450. //---------------------------------------------------------------------------
  451. THEMEAPI_(int) ClassicGetSystemMetrics( int iMetric );
  452. THEMEAPI_(BOOL) ClassicSystemParametersInfoA( UINT uiAction, UINT uiParam, IN OUT PVOID pvParam, UINT fWinIni);
  453. THEMEAPI_(BOOL) ClassicSystemParametersInfoW( UINT uiAction, UINT uiParam, IN OUT PVOID pvParam, UINT fWinIni);
  454. THEMEAPI_(BOOL) ClassicAdjustWindowRectEx( LPRECT prcWnd, DWORD dwStyle, BOOL fMenu, DWORD dwExStyle );
  455. #ifdef UNICODE
  456. #define ClassicSystemParametersInfo ClassicSystemParametersInfoW
  457. #else UNICODE
  458. #define ClassicSystemParametersInfo ClassicSystemParametersInfoA
  459. #endif UNICODE
  460. //---------------------------------------------------------------------------
  461. #define PACKTHEM_VERSION 3 // latest change: localizable properties
  462. //---------------------------------------------------------------------------
  463. #endif // _UXTHEMEP_H_
  464. //---------------------------------------------------------------------------