2 * Internal uxtheme defines & declarations
4 * Copyright (C) 2003 Kevin Koltzau
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #ifndef __WINE_UXTHEMEDLL_H
22 #define __WINE_UXTHEMEDLL_H
24 typedef HANDLE HTHEMEFILE;
26 /**********************************************************************
29 * Callback function for EnumThemes.
32 * TRUE to continue enumeration, FALSE to stop
36 * pszThemeFileName Full path to theme msstyles file
37 * pszThemeName Display name for theme
38 * pszToolTip Tooltip name for theme
39 * lpReserved2 Always 0
40 * lpData Value passed through lpData from EnumThemes
42 typedef BOOL (CALLBACK *EnumThemeProc)(LPVOID lpReserved, LPCWSTR pszThemeFileName,
43 LPCWSTR pszThemeName, LPCWSTR pszToolTip, LPVOID lpReserved2,
46 /**********************************************************************
47 * ParseThemeIniFileProc
49 * Callback function for ParseThemeIniFile.
52 * TRUE to continue enumeration, FALSE to stop
56 * pszParam1 Use defined by entry type
57 * pszParam2 Use defined by entry type
58 * pszParam3 Use defined by entry type
59 * dwParam Use defined by entry type
60 * lpData Value passed through lpData from ParseThemeIniFile
63 * I don't know what the valid entry types are
65 typedef BOOL (CALLBACK*ParseThemeIniFileProc)(DWORD dwType, LPWSTR pszParam1,
66 LPWSTR pszParam2, LPWSTR pszParam3,
67 DWORD dwParam, LPVOID lpData);
69 /* Structure filled in by EnumThemeColors() and EnumeThemeSizes() with the
70 * various strings for a theme color or size. */
71 typedef struct tagTHEMENAMES
73 WCHAR szName[MAX_PATH+1];
74 WCHAR szDisplayName[MAX_PATH+1];
75 WCHAR szTooltip[MAX_PATH+1];
76 } THEMENAMES, *PTHEMENAMES;
78 /* Declarations for undocumented functions for use internally */
79 DWORD WINAPI QueryThemeServices(void);
80 HRESULT WINAPI OpenThemeFile(LPCWSTR pszThemeFileName, LPCWSTR pszColorName,
81 LPCWSTR pszSizeName, HTHEMEFILE *hThemeFile,
83 HRESULT WINAPI CloseThemeFile(HTHEMEFILE hThemeFile);
84 HRESULT WINAPI ApplyTheme(HTHEMEFILE hThemeFile, char *unknown, HWND hWnd);
85 HRESULT WINAPI GetThemeDefaults(LPCWSTR pszThemeFileName, LPWSTR pszColorName,
86 DWORD dwColorNameLen, LPWSTR pszSizeName,
88 HRESULT WINAPI EnumThemes(LPCWSTR pszThemePath, EnumThemeProc callback,
90 HRESULT WINAPI EnumThemeColors(LPWSTR pszThemeFileName, LPWSTR pszSizeName,
91 DWORD dwColorNum, PTHEMENAMES pszColorNames);
92 HRESULT WINAPI EnumThemeSizes(LPWSTR pszThemeFileName, LPWSTR pszColorName,
93 DWORD dwSizeNum, PTHEMENAMES pszColorNames);
94 HRESULT WINAPI ParseThemeIniFile(LPCWSTR pszIniFileName, LPWSTR pszUnknown,
95 ParseThemeIniFileProc callback, LPVOID lpData);
97 extern void UXTHEME_InitSystem(HINSTANCE hInst);
99 /* No alpha blending */
100 #define ALPHABLEND_NONE 0
101 /* "Cheap" binary alpha blending - but possibly faster */
102 #define ALPHABLEND_BINARY 1
103 /* Full alpha blending */
104 #define ALPHABLEND_FULL 2
106 #endif /* __WINE_UXTHEMEDLL_H */