- Rename dupstrW to strdupW, and remove duplicate definition.
[wine] / dlls / uxtheme / uxthemedll.h
1 /*
2  * Internal uxtheme defines & declarations
3  *
4  * Copyright (C) 2003 Kevin Koltzau
5  *
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.
10  *
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.
15  *
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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 #ifndef __WINE_UXTHEMEDLL_H
22 #define __WINE_UXTHEMEDLL_H
23
24 typedef HANDLE HTHEMEFILE;
25
26 /**********************************************************************
27  *              EnumThemeProc
28  *
29  * Callback function for EnumThemes.
30  *
31  * RETURNS
32  *     TRUE to continue enumeration, FALSE to stop
33  *
34  * PARAMS
35  *     lpReserved          Always 0
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
41  */
42 typedef BOOL (CALLBACK *EnumThemeProc)(LPVOID lpReserved, LPCWSTR pszThemeFileName,
43                                        LPCWSTR pszThemeName, LPCWSTR pszToolTip, LPVOID lpReserved2,
44                                        LPVOID lpData);
45
46 /**********************************************************************
47  *              ParseThemeIniFileProc
48  *
49  * Callback function for ParseThemeIniFile.
50  *
51  * RETURNS
52  *     TRUE to continue enumeration, FALSE to stop
53  *
54  * PARAMS
55  *     dwType              Entry type
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
61  *
62  * NOTES
63  * I don't know what the valid entry types are
64  */
65 typedef BOOL (CALLBACK*ParseThemeIniFileProc)(DWORD dwType, LPWSTR pszParam1,
66                                               LPWSTR pszParam2, LPWSTR pszParam3,
67                                               DWORD dwParam, LPVOID lpData);
68
69 /* Declarations for undocumented functions for use internally */
70 DWORD WINAPI QueryThemeServices(void);
71 HRESULT WINAPI OpenThemeFile(LPCWSTR pszThemeFileName, LPCWSTR pszColorName,
72                              LPCWSTR pszSizeName, HTHEMEFILE *hThemeFile,
73                              DWORD unknown);
74 HRESULT WINAPI CloseThemeFile(HTHEMEFILE hThemeFile);
75 HRESULT WINAPI ApplyTheme(HTHEMEFILE hThemeFile, char *unknown, HWND hWnd);
76 HRESULT WINAPI GetThemeDefaults(LPCWSTR pszThemeFileName, LPWSTR pszColorName,
77                                 DWORD dwColorNameLen, LPWSTR pszSizeName,
78                                 DWORD dwSizeNameLen);
79 HRESULT WINAPI EnumThemes(LPCWSTR pszThemePath, EnumThemeProc callback,
80                           LPVOID lpData);
81 HRESULT WINAPI EnumThemeColors(LPWSTR pszThemeFileName, LPWSTR pszSizeName,
82                                DWORD dwColorNum, LPWSTR pszColorName);
83 HRESULT WINAPI EnumThemeSizes(LPWSTR pszThemeFileName, LPWSTR pszColorName,
84                               DWORD dwSizeNum, LPWSTR pszSizeName);
85 HRESULT WINAPI ParseThemeIniFile(LPCWSTR pszIniFileName, LPWSTR pszUnknown,
86                                  ParseThemeIniFileProc callback, LPVOID lpData);
87
88 extern void UXTHEME_InitSystem(HINSTANCE hInst);
89
90 #endif