crypt32: If a decoding function failed, free the memory allocated for it.
[wine] / dlls / uxtheme / stylemap.c
1 /*
2  * msstyle data maps
3  *
4  * Copyright (C) 2004 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20
21 #include "config.h"
22
23 #include <stdarg.h>
24
25 #include "windef.h"
26 #include "winbase.h"
27 #include "winuser.h"
28 #include "tmschema.h"
29
30 #define TMT_ENUM 200
31
32 typedef struct _MSSTYLES_PROPERTY_MAP {
33     WORD dwPrimitiveType;
34     WORD dwPropertyID;
35     WCHAR szPropertyName[24];
36 } MSSTYLES_PROPERTY_MAP, *PMSSTYLES_PROPERTY_MAP;
37
38 typedef struct _MSSTYLES_ENUM_MAP {
39     WORD dwEnum;
40     WORD dwValue;
41     WCHAR szValueName[18];
42 } MSSTYLES_ENUM_MAP, *PMSSTYLES_ENUM_MAP;
43
44 typedef struct _MSSTYLES_CLASS_MAP {
45     WORD dwPartID;
46     WORD dwStateID;
47     WCHAR szName[31];
48 } MSSTYLES_CLASS_MAP, *PMSSTYLES_CLASS_MAP;
49
50 typedef struct _MSSTYLES_CLASS_NAME {
51     const MSSTYLES_CLASS_MAP *lpMap;
52     WCHAR pszClass[12];
53 } MSSTYLES_CLASS_NAME, *PMSSTYLES_CLASS_NAME;
54
55 /***********************************************************************
56  * Map property names to IDs & primitive types
57  * PrimitiveType,PropertyID,PropertyName
58  */
59 static const MSSTYLES_PROPERTY_MAP mapProperty[] = {
60     {TMT_STRING,TMT_STRING,{'S','T','R','I','N','G','\0'}},
61     {TMT_INT,TMT_INT,{'I','N','T','\0'}},
62     {TMT_BOOL,TMT_BOOL,{'B','O','O','L','\0'}},
63     {TMT_COLOR,TMT_COLOR,{'C','O','L','O','R','\0'}},
64     {TMT_MARGINS,TMT_MARGINS,{'M','A','R','G','I','N','S','\0'}},
65     {TMT_FILENAME,TMT_FILENAME,{'F','I','L','E','N','A','M','E','\0'}},
66     {TMT_SIZE,TMT_SIZE,{'S','I','Z','E','\0'}},
67     {TMT_POSITION,TMT_POSITION,{'P','O','S','I','T','I','O','N','\0'}},
68     {TMT_RECT,TMT_RECT,{'R','E','C','T','\0'}},
69     {TMT_FONT,TMT_FONT,{'F','O','N','T','\0'}},
70     {TMT_INTLIST,TMT_INTLIST,{'I','N','T','L','I','S','T','\0'}},
71     {TMT_STRING,TMT_COLORSCHEMES,{'C','O','L','O','R','S','C','H','E','M','E','S','\0'}},
72     {TMT_STRING,TMT_SIZES,{'S','I','Z','E','S','\0'}},
73     {TMT_INT,TMT_CHARSET,{'C','H','A','R','S','E','T','\0'}},
74     {TMT_STRING,TMT_DISPLAYNAME,{'D','I','S','P','L','A','Y','N','A','M','E','\0'}},
75     {TMT_STRING,TMT_TOOLTIP,{'T','O','O','L','T','I','P','\0'}},
76     {TMT_STRING,TMT_COMPANY,{'C','O','M','P','A','N','Y','\0'}},
77     {TMT_STRING,TMT_AUTHOR,{'A','U','T','H','O','R','\0'}},
78     {TMT_STRING,TMT_COPYRIGHT,{'C','O','P','Y','R','I','G','H','T','\0'}},
79     {TMT_STRING,TMT_URL,{'U','R','L','\0'}},
80     {TMT_STRING,TMT_VERSION,{'V','E','R','S','I','O','N','\0'}},
81     {TMT_STRING,TMT_DESCRIPTION,{'D','E','S','C','R','I','P','T','I','O','N','\0'}},
82     {TMT_FONT,TMT_CAPTIONFONT,{'C','A','P','T','I','O','N','F','O','N','T','\0'}},
83     {TMT_FONT,TMT_SMALLCAPTIONFONT,{'S','M','A','L','L','C','A','P','T','I','O','N','F','O','N','T','\0'}},
84     {TMT_FONT,TMT_MENUFONT,{'M','E','N','U','F','O','N','T','\0'}},
85     {TMT_FONT,TMT_STATUSFONT,{'S','T','A','T','U','S','F','O','N','T','\0'}},
86     {TMT_FONT,TMT_MSGBOXFONT,{'M','S','G','B','O','X','F','O','N','T','\0'}},
87     {TMT_FONT,TMT_ICONTITLEFONT,{'I','C','O','N','T','I','T','L','E','F','O','N','T','\0'}},
88     {TMT_BOOL,TMT_FLATMENUS,{'F','L','A','T','M','E','N','U','S','\0'}},
89     {TMT_SIZE,TMT_SIZINGBORDERWIDTH,{'S','I','Z','I','N','G','B','O','R','D','E','R','W','I','D','T','H','\0'}},
90     {TMT_SIZE,TMT_SCROLLBARWIDTH,{'S','C','R','O','L','L','B','A','R','W','I','D','T','H','\0'}},
91     {TMT_SIZE,TMT_SCROLLBARHEIGHT,{'S','C','R','O','L','L','B','A','R','H','E','I','G','H','T','\0'}},
92     {TMT_SIZE,TMT_CAPTIONBARWIDTH,{'C','A','P','T','I','O','N','B','A','R','W','I','D','T','H','\0'}},
93     {TMT_SIZE,TMT_CAPTIONBARHEIGHT,{'C','A','P','T','I','O','N','B','A','R','H','E','I','G','H','T','\0'}},
94     {TMT_SIZE,TMT_SMCAPTIONBARWIDTH,{'S','M','C','A','P','T','I','O','N','B','A','R','W','I','D','T','H','\0'}},
95     {TMT_SIZE,TMT_SMCAPTIONBARHEIGHT,{'S','M','C','A','P','T','I','O','N','B','A','R','H','E','I','G','H','T','\0'}},
96     {TMT_SIZE,TMT_MENUBARWIDTH,{'M','E','N','U','B','A','R','W','I','D','T','H','\0'}},
97     {TMT_SIZE,TMT_MENUBARHEIGHT,{'M','E','N','U','B','A','R','H','E','I','G','H','T','\0'}},
98     {TMT_INT,TMT_MINCOLORDEPTH,{'M','I','N','C','O','L','O','R','D','E','P','T','H','\0'}},
99     {TMT_STRING,TMT_CSSNAME,{'C','S','S','N','A','M','E','\0'}},
100     {TMT_STRING,TMT_XMLNAME,{'X','M','L','N','A','M','E','\0'}},
101     {TMT_COLOR,TMT_SCROLLBAR,{'S','C','R','O','L','L','B','A','R','\0'}},
102     {TMT_COLOR,TMT_BACKGROUND,{'B','A','C','K','G','R','O','U','N','D','\0'}},
103     {TMT_COLOR,TMT_ACTIVECAPTION,{'A','C','T','I','V','E','C','A','P','T','I','O','N','\0'}},
104     {TMT_COLOR,TMT_INACTIVECAPTION,{'I','N','A','C','T','I','V','E','C','A','P','T','I','O','N','\0'}},
105     {TMT_COLOR,TMT_MENU,{'M','E','N','U','\0'}},
106     {TMT_COLOR,TMT_WINDOW,{'W','I','N','D','O','W','\0'}},
107     {TMT_COLOR,TMT_WINDOWFRAME,{'W','I','N','D','O','W','F','R','A','M','E','\0'}},
108     {TMT_COLOR,TMT_MENUTEXT,{'M','E','N','U','T','E','X','T','\0'}},
109     {TMT_COLOR,TMT_WINDOWTEXT,{'W','I','N','D','O','W','T','E','X','T','\0'}},
110     {TMT_COLOR,TMT_CAPTIONTEXT,{'C','A','P','T','I','O','N','T','E','X','T','\0'}},
111     {TMT_COLOR,TMT_ACTIVEBORDER,{'A','C','T','I','V','E','B','O','R','D','E','R','\0'}},
112     {TMT_COLOR,TMT_INACTIVEBORDER,{'I','N','A','C','T','I','V','E','B','O','R','D','E','R','\0'}},
113     {TMT_COLOR,TMT_APPWORKSPACE,{'A','P','P','W','O','R','K','S','P','A','C','E','\0'}},
114     {TMT_COLOR,TMT_HIGHLIGHT,{'H','I','G','H','L','I','G','H','T','\0'}},
115     {TMT_COLOR,TMT_HIGHLIGHTTEXT,{'H','I','G','H','L','I','G','H','T','T','E','X','T','\0'}},
116     {TMT_COLOR,TMT_BTNFACE,{'B','T','N','F','A','C','E','\0'}},
117     {TMT_COLOR,TMT_BTNSHADOW,{'B','T','N','S','H','A','D','O','W','\0'}},
118     {TMT_COLOR,TMT_GRAYTEXT,{'G','R','A','Y','T','E','X','T','\0'}},
119     {TMT_COLOR,TMT_BTNTEXT,{'B','T','N','T','E','X','T','\0'}},
120     {TMT_COLOR,TMT_INACTIVECAPTIONTEXT,{'I','N','A','C','T','I','V','E','C','A','P','T','I','O','N','T','E','X','T','\0'}},
121     {TMT_COLOR,TMT_BTNHIGHLIGHT,{'B','T','N','H','I','G','H','L','I','G','H','T','\0'}},
122     {TMT_COLOR,TMT_DKSHADOW3D,{'D','K','S','H','A','D','O','W','3','D','\0'}},
123     {TMT_COLOR,TMT_LIGHT3D,{'L','I','G','H','T','3','D','\0'}},
124     {TMT_COLOR,TMT_INFOTEXT,{'I','N','F','O','T','E','X','T','\0'}},
125     {TMT_COLOR,TMT_INFOBK,{'I','N','F','O','B','K','\0'}},
126     {TMT_COLOR,TMT_BUTTONALTERNATEFACE,{'B','U','T','T','O','N','A','L','T','E','R','N','A','T','E','F','A','C','E','\0'}},
127     {TMT_COLOR,TMT_HOTTRACKING,{'H','O','T','T','R','A','C','K','I','N','G','\0'}},
128     {TMT_COLOR,TMT_GRADIENTACTIVECAPTION,{'G','R','A','D','I','E','N','T','A','C','T','I','V','E','C','A','P','T','I','O','N','\0'}},
129     {TMT_COLOR,TMT_GRADIENTINACTIVECAPTION,{'G','R','A','D','I','E','N','T','I','N','A','C','T','I','V','E','C','A','P','T','I','O','N','\0'}},
130     {TMT_COLOR,TMT_MENUHILIGHT,{'M','E','N','U','H','I','L','I','G','H','T','\0'}},
131     {TMT_COLOR,TMT_MENUBAR,{'M','E','N','U','B','A','R','\0'}},
132     {TMT_INT,TMT_FROMHUE1,{'F','R','O','M','H','U','E','1','\0'}},
133     {TMT_INT,TMT_FROMHUE2,{'F','R','O','M','H','U','E','2','\0'}},
134     {TMT_INT,TMT_FROMHUE3,{'F','R','O','M','H','U','E','3','\0'}},
135     {TMT_INT,TMT_FROMHUE4,{'F','R','O','M','H','U','E','4','\0'}},
136     {TMT_INT,TMT_FROMHUE5,{'F','R','O','M','H','U','E','5','\0'}},
137     {TMT_INT,TMT_TOHUE1,{'T','O','H','U','E','1','\0'}},
138     {TMT_INT,TMT_TOHUE2,{'T','O','H','U','E','2','\0'}},
139     {TMT_INT,TMT_TOHUE3,{'T','O','H','U','E','3','\0'}},
140     {TMT_INT,TMT_TOHUE4,{'T','O','H','U','E','4','\0'}},
141     {TMT_INT,TMT_TOHUE5,{'T','O','H','U','E','5','\0'}},
142     {TMT_COLOR,TMT_FROMCOLOR1,{'F','R','O','M','C','O','L','O','R','1','\0'}},
143     {TMT_COLOR,TMT_FROMCOLOR2,{'F','R','O','M','C','O','L','O','R','2','\0'}},
144     {TMT_COLOR,TMT_FROMCOLOR3,{'F','R','O','M','C','O','L','O','R','3','\0'}},
145     {TMT_COLOR,TMT_FROMCOLOR4,{'F','R','O','M','C','O','L','O','R','4','\0'}},
146     {TMT_COLOR,TMT_FROMCOLOR5,{'F','R','O','M','C','O','L','O','R','5','\0'}},
147     {TMT_COLOR,TMT_TOCOLOR1,{'T','O','C','O','L','O','R','1','\0'}},
148     {TMT_COLOR,TMT_TOCOLOR2,{'T','O','C','O','L','O','R','2','\0'}},
149     {TMT_COLOR,TMT_TOCOLOR3,{'T','O','C','O','L','O','R','3','\0'}},
150     {TMT_COLOR,TMT_TOCOLOR4,{'T','O','C','O','L','O','R','4','\0'}},
151     {TMT_COLOR,TMT_TOCOLOR5,{'T','O','C','O','L','O','R','5','\0'}},
152     {TMT_BOOL,TMT_TRANSPARENT,{'T','R','A','N','S','P','A','R','E','N','T','\0'}},
153     {TMT_BOOL,TMT_AUTOSIZE,{'A','U','T','O','S','I','Z','E','\0'}},
154     {TMT_BOOL,TMT_BORDERONLY,{'B','O','R','D','E','R','O','N','L','Y','\0'}},
155     {TMT_BOOL,TMT_COMPOSITED,{'C','O','M','P','O','S','I','T','E','D','\0'}},
156     {TMT_BOOL,TMT_BGFILL,{'B','G','F','I','L','L','\0'}},
157     {TMT_BOOL,TMT_GLYPHTRANSPARENT,{'G','L','Y','P','H','T','R','A','N','S','P','A','R','E','N','T','\0'}},
158     {TMT_BOOL,TMT_GLYPHONLY,{'G','L','Y','P','H','O','N','L','Y','\0'}},
159     {TMT_BOOL,TMT_ALWAYSSHOWSIZINGBAR,{'A','L','W','A','Y','S','S','H','O','W','S','I','Z','I','N','G','B','A','R','\0'}},
160     {TMT_BOOL,TMT_MIRRORIMAGE,{'M','I','R','R','O','R','I','M','A','G','E','\0'}},
161     {TMT_BOOL,TMT_UNIFORMSIZING,{'U','N','I','F','O','R','M','S','I','Z','I','N','G','\0'}},
162     {TMT_BOOL,TMT_INTEGRALSIZING,{'I','N','T','E','G','R','A','L','S','I','Z','I','N','G','\0'}},
163     {TMT_BOOL,TMT_SOURCEGROW,{'S','O','U','R','C','E','G','R','O','W','\0'}},
164     {TMT_BOOL,TMT_SOURCESHRINK,{'S','O','U','R','C','E','S','H','R','I','N','K','\0'}},
165     {TMT_INT,TMT_IMAGECOUNT,{'I','M','A','G','E','C','O','U','N','T','\0'}},
166     {TMT_INT,TMT_ALPHALEVEL,{'A','L','P','H','A','L','E','V','E','L','\0'}},
167     {TMT_INT,TMT_BORDERSIZE,{'B','O','R','D','E','R','S','I','Z','E','\0'}},
168     {TMT_INT,TMT_ROUNDCORNERWIDTH,{'R','O','U','N','D','C','O','R','N','E','R','W','I','D','T','H','\0'}},
169     {TMT_INT,TMT_ROUNDCORNERHEIGHT,{'R','O','U','N','D','C','O','R','N','E','R','H','E','I','G','H','T','\0'}},
170     {TMT_INT,TMT_GRADIENTRATIO1,{'G','R','A','D','I','E','N','T','R','A','T','I','O','1','\0'}},
171     {TMT_INT,TMT_GRADIENTRATIO2,{'G','R','A','D','I','E','N','T','R','A','T','I','O','2','\0'}},
172     {TMT_INT,TMT_GRADIENTRATIO3,{'G','R','A','D','I','E','N','T','R','A','T','I','O','3','\0'}},
173     {TMT_INT,TMT_GRADIENTRATIO4,{'G','R','A','D','I','E','N','T','R','A','T','I','O','4','\0'}},
174     {TMT_INT,TMT_GRADIENTRATIO5,{'G','R','A','D','I','E','N','T','R','A','T','I','O','5','\0'}},
175     {TMT_INT,TMT_PROGRESSCHUNKSIZE,{'P','R','O','G','R','E','S','S','C','H','U','N','K','S','I','Z','E','\0'}},
176     {TMT_INT,TMT_PROGRESSSPACESIZE,{'P','R','O','G','R','E','S','S','S','P','A','C','E','S','I','Z','E','\0'}},
177     {TMT_INT,TMT_SATURATION,{'S','A','T','U','R','A','T','I','O','N','\0'}},
178     {TMT_INT,TMT_TEXTBORDERSIZE,{'T','E','X','T','B','O','R','D','E','R','S','I','Z','E','\0'}},
179     {TMT_INT,TMT_ALPHATHRESHOLD,{'A','L','P','H','A','T','H','R','E','S','H','O','L','D','\0'}},
180     {TMT_SIZE,TMT_WIDTH,{'W','I','D','T','H','\0'}},
181     {TMT_SIZE,TMT_HEIGHT,{'H','E','I','G','H','T','\0'}},
182     {TMT_INT,TMT_GLYPHINDEX,{'G','L','Y','P','H','I','N','D','E','X','\0'}},
183     {TMT_INT,TMT_TRUESIZESTRETCHMARK,{'T','R','U','E','S','I','Z','E','S','T','R','E','T','C','H','M','A','R','K','\0'}},
184     {TMT_INT,TMT_MINDPI1,{'M','I','N','D','P','I','1','\0'}},
185     {TMT_INT,TMT_MINDPI2,{'M','I','N','D','P','I','2','\0'}},
186     {TMT_INT,TMT_MINDPI3,{'M','I','N','D','P','I','3','\0'}},
187     {TMT_INT,TMT_MINDPI4,{'M','I','N','D','P','I','4','\0'}},
188     {TMT_INT,TMT_MINDPI5,{'M','I','N','D','P','I','5','\0'}},
189     {TMT_FONT,TMT_GLYPHFONT,{'G','L','Y','P','H','F','O','N','T','\0'}},
190     {TMT_FILENAME,TMT_IMAGEFILE,{'I','M','A','G','E','F','I','L','E','\0'}},
191     {TMT_FILENAME,TMT_IMAGEFILE1,{'I','M','A','G','E','F','I','L','E','1','\0'}},
192     {TMT_FILENAME,TMT_IMAGEFILE2,{'I','M','A','G','E','F','I','L','E','2','\0'}},
193     {TMT_FILENAME,TMT_IMAGEFILE3,{'I','M','A','G','E','F','I','L','E','3','\0'}},
194     {TMT_FILENAME,TMT_IMAGEFILE4,{'I','M','A','G','E','F','I','L','E','4','\0'}},
195     {TMT_FILENAME,TMT_IMAGEFILE5,{'I','M','A','G','E','F','I','L','E','5','\0'}},
196     {TMT_FILENAME,TMT_STOCKIMAGEFILE,{'S','T','O','C','K','I','M','A','G','E','F','I','L','E','\0'}},
197     {TMT_FILENAME,TMT_GLYPHIMAGEFILE,{'G','L','Y','P','H','I','M','A','G','E','F','I','L','E','\0'}},
198     {TMT_STRING,TMT_TEXT,{'T','E','X','T','\0'}},
199     {TMT_POSITION,TMT_OFFSET,{'O','F','F','S','E','T','\0'}},
200     {TMT_POSITION,TMT_TEXTSHADOWOFFSET,{'T','E','X','T','S','H','A','D','O','W','O','F','F','S','E','T','\0'}},
201     {TMT_POSITION,TMT_MINSIZE,{'M','I','N','S','I','Z','E','\0'}},
202     {TMT_POSITION,TMT_MINSIZE1,{'M','I','N','S','I','Z','E','1','\0'}},
203     {TMT_POSITION,TMT_MINSIZE2,{'M','I','N','S','I','Z','E','2','\0'}},
204     {TMT_POSITION,TMT_MINSIZE3,{'M','I','N','S','I','Z','E','3','\0'}},
205     {TMT_POSITION,TMT_MINSIZE4,{'M','I','N','S','I','Z','E','4','\0'}},
206     {TMT_POSITION,TMT_MINSIZE5,{'M','I','N','S','I','Z','E','5','\0'}},
207     {TMT_POSITION,TMT_NORMALSIZE,{'N','O','R','M','A','L','S','I','Z','E','\0'}},
208     {TMT_MARGINS,TMT_SIZINGMARGINS,{'S','I','Z','I','N','G','M','A','R','G','I','N','S','\0'}},
209     {TMT_MARGINS,TMT_CONTENTMARGINS,{'C','O','N','T','E','N','T','M','A','R','G','I','N','S','\0'}},
210     {TMT_MARGINS,TMT_CAPTIONMARGINS,{'C','A','P','T','I','O','N','M','A','R','G','I','N','S','\0'}},
211     {TMT_COLOR,TMT_BORDERCOLOR,{'B','O','R','D','E','R','C','O','L','O','R','\0'}},
212     {TMT_COLOR,TMT_FILLCOLOR,{'F','I','L','L','C','O','L','O','R','\0'}},
213     {TMT_COLOR,TMT_TEXTCOLOR,{'T','E','X','T','C','O','L','O','R','\0'}},
214     {TMT_COLOR,TMT_EDGELIGHTCOLOR,{'E','D','G','E','L','I','G','H','T','C','O','L','O','R','\0'}},
215     {TMT_COLOR,TMT_EDGEHIGHLIGHTCOLOR,{'E','D','G','E','H','I','G','H','L','I','G','H','T','C','O','L','O','R','\0'}},
216     {TMT_COLOR,TMT_EDGESHADOWCOLOR,{'E','D','G','E','S','H','A','D','O','W','C','O','L','O','R','\0'}},
217     {TMT_COLOR,TMT_EDGEDKSHADOWCOLOR,{'E','D','G','E','D','K','S','H','A','D','O','W','C','O','L','O','R','\0'}},
218     {TMT_COLOR,TMT_EDGEFILLCOLOR,{'E','D','G','E','F','I','L','L','C','O','L','O','R','\0'}},
219     {TMT_COLOR,TMT_TRANSPARENTCOLOR,{'T','R','A','N','S','P','A','R','E','N','T','C','O','L','O','R','\0'}},
220     {TMT_COLOR,TMT_GRADIENTCOLOR1,{'G','R','A','D','I','E','N','T','C','O','L','O','R','1','\0'}},
221     {TMT_COLOR,TMT_GRADIENTCOLOR2,{'G','R','A','D','I','E','N','T','C','O','L','O','R','2','\0'}},
222     {TMT_COLOR,TMT_GRADIENTCOLOR3,{'G','R','A','D','I','E','N','T','C','O','L','O','R','3','\0'}},
223     {TMT_COLOR,TMT_GRADIENTCOLOR4,{'G','R','A','D','I','E','N','T','C','O','L','O','R','4','\0'}},
224     {TMT_COLOR,TMT_GRADIENTCOLOR5,{'G','R','A','D','I','E','N','T','C','O','L','O','R','5','\0'}},
225     {TMT_COLOR,TMT_SHADOWCOLOR,{'S','H','A','D','O','W','C','O','L','O','R','\0'}},
226     {TMT_COLOR,TMT_GLOWCOLOR,{'G','L','O','W','C','O','L','O','R','\0'}},
227     {TMT_COLOR,TMT_TEXTBORDERCOLOR,{'T','E','X','T','B','O','R','D','E','R','C','O','L','O','R','\0'}},
228     {TMT_COLOR,TMT_TEXTSHADOWCOLOR,{'T','E','X','T','S','H','A','D','O','W','C','O','L','O','R','\0'}},
229     {TMT_COLOR,TMT_GLYPHTEXTCOLOR,{'G','L','Y','P','H','T','E','X','T','C','O','L','O','R','\0'}},
230     {TMT_COLOR,TMT_GLYPHTRANSPARENTCOLOR,{'G','L','Y','P','H','T','R','A','N','S','P','A','R','E','N','T','C','O','L','O','R','\0'}},
231     {TMT_COLOR,TMT_FILLCOLORHINT,{'F','I','L','L','C','O','L','O','R','H','I','N','T','\0'}},
232     {TMT_COLOR,TMT_BORDERCOLORHINT,{'B','O','R','D','E','R','C','O','L','O','R','H','I','N','T','\0'}},
233     {TMT_COLOR,TMT_ACCENTCOLORHINT,{'A','C','C','E','N','T','C','O','L','O','R','H','I','N','T','\0'}},
234     {TMT_ENUM,TMT_BGTYPE,{'B','G','T','Y','P','E','\0'}},
235     {TMT_ENUM,TMT_BORDERTYPE,{'B','O','R','D','E','R','T','Y','P','E','\0'}},
236     {TMT_ENUM,TMT_FILLTYPE,{'F','I','L','L','T','Y','P','E','\0'}},
237     {TMT_ENUM,TMT_SIZINGTYPE,{'S','I','Z','I','N','G','T','Y','P','E','\0'}},
238     {TMT_ENUM,TMT_HALIGN,{'H','A','L','I','G','N','\0'}},
239     {TMT_ENUM,TMT_CONTENTALIGNMENT,{'C','O','N','T','E','N','T','A','L','I','G','N','M','E','N','T','\0'}},
240     {TMT_ENUM,TMT_VALIGN,{'V','A','L','I','G','N','\0'}},
241     {TMT_ENUM,TMT_OFFSETTYPE,{'O','F','F','S','E','T','T','Y','P','E','\0'}},
242     {TMT_ENUM,TMT_ICONEFFECT,{'I','C','O','N','E','F','F','E','C','T','\0'}},
243     {TMT_ENUM,TMT_TEXTSHADOWTYPE,{'T','E','X','T','S','H','A','D','O','W','T','Y','P','E','\0'}},
244     {TMT_ENUM,TMT_IMAGELAYOUT,{'I','M','A','G','E','L','A','Y','O','U','T','\0'}},
245     {TMT_ENUM,TMT_GLYPHTYPE,{'G','L','Y','P','H','T','Y','P','E','\0'}},
246     {TMT_ENUM,TMT_IMAGESELECTTYPE,{'I','M','A','G','E','S','E','L','E','C','T','T','Y','P','E','\0'}},
247     {TMT_ENUM,TMT_GLYPHFONTSIZINGTYPE,{'G','L','Y','P','H','F','O','N','T','S','I','Z','I','N','G','T','Y','P','E','\0'}},
248     {TMT_ENUM,TMT_TRUESIZESCALINGTYPE,{'T','R','U','E','S','I','Z','E','S','C','A','L','I','N','G','T','Y','P','E','\0'}},
249     {TMT_BOOL,TMT_USERPICTURE,{'U','S','E','R','P','I','C','T','U','R','E','\0'}},
250     {TMT_RECT,TMT_DEFAULTPANESIZE,{'D','E','F','A','U','L','T','P','A','N','E','S','I','Z','E','\0'}},
251     {TMT_COLOR,TMT_BLENDCOLOR,{'B','L','E','N','D','C','O','L','O','R','\0'}},
252     {0,0,{'\0'}}
253 };
254
255 /***********************************************************************
256  * Map strings to enumeration values
257  * Enum,Value,ValueName
258  */
259 static const MSSTYLES_ENUM_MAP mapEnum[] = {
260     {TMT_BGTYPE,BT_IMAGEFILE,{'I','M','A','G','E','F','I','L','E','\0'}},
261     {TMT_BGTYPE,BT_BORDERFILL,{'B','O','R','D','E','R','F','I','L','L','\0'}},
262     {TMT_BGTYPE,BT_NONE,{'N','O','N','E','\0'}},
263     {TMT_IMAGELAYOUT,IL_VERTICAL,{'V','E','R','T','I','C','A','L','\0'}},
264     {TMT_IMAGELAYOUT,IL_HORIZONTAL,{'H','O','R','I','Z','O','N','T','A','L','\0'}},
265     {TMT_BORDERTYPE,BT_RECT,{'R','E','C','T','\0'}},
266     {TMT_BORDERTYPE,BT_ROUNDRECT,{'R','O','U','N','D','R','E','C','T','\0'}},
267     {TMT_BORDERTYPE,BT_ELLIPSE,{'E','L','L','I','P','S','E','\0'}},
268     {TMT_FILLTYPE,FT_SOLID,{'S','O','L','I','D','\0'}},
269     {TMT_FILLTYPE,FT_VERTGRADIENT,{'V','E','R','T','G','R','A','D','I','E','N','T','\0'}},
270     {TMT_FILLTYPE,FT_HORZGRADIENT,{'H','O','R','Z','G','R','A','D','I','E','N','T','\0'}},
271     {TMT_FILLTYPE,FT_RADIALGRADIENT,{'R','A','D','I','A','L','G','R','A','D','I','E','N','T','\0'}},
272     {TMT_FILLTYPE,FT_TILEIMAGE,{'T','I','L','E','I','M','A','G','E','\0'}},
273     {TMT_SIZINGTYPE,ST_TRUESIZE,{'T','R','U','E','S','I','Z','E','\0'}},
274     {TMT_SIZINGTYPE,ST_STRETCH,{'S','T','R','E','T','C','H','\0'}},
275     {TMT_SIZINGTYPE,ST_TILE,{'T','I','L','E','\0'}},
276     {TMT_HALIGN,HA_LEFT,{'L','E','F','T','\0'}},
277     {TMT_HALIGN,HA_CENTER,{'C','E','N','T','E','R','\0'}},
278     {TMT_HALIGN,HA_RIGHT,{'R','I','G','H','T','\0'}},
279     {TMT_CONTENTALIGNMENT,CA_LEFT,{'L','E','F','T','\0'}},
280     {TMT_CONTENTALIGNMENT,CA_CENTER,{'C','E','N','T','E','R','\0'}},
281     {TMT_CONTENTALIGNMENT,CA_RIGHT,{'R','I','G','H','T','\0'}},
282     {TMT_VALIGN,VA_TOP,{'T','O','P','\0'}},
283     {TMT_VALIGN,VA_CENTER,{'C','E','N','T','E','R','\0'}},
284     {TMT_VALIGN,VA_BOTTOM,{'B','O','T','T','O','M','\0'}},
285     {TMT_OFFSETTYPE,OT_TOPLEFT,{'T','O','P','L','E','F','T','\0'}},
286     {TMT_OFFSETTYPE,OT_TOPRIGHT,{'T','O','P','R','I','G','H','T','\0'}},
287     {TMT_OFFSETTYPE,OT_TOPMIDDLE,{'T','O','P','M','I','D','D','L','E','\0'}},
288     {TMT_OFFSETTYPE,OT_BOTTOMLEFT,{'B','O','T','T','O','M','L','E','F','T','\0'}},
289     {TMT_OFFSETTYPE,OT_BOTTOMRIGHT,{'B','O','T','T','O','M','R','I','G','H','T','\0'}},
290     {TMT_OFFSETTYPE,OT_BOTTOMMIDDLE,{'B','O','T','T','O','M','M','I','D','D','L','E','\0'}},
291     {TMT_OFFSETTYPE,OT_MIDDLELEFT,{'M','I','D','D','L','E','L','E','F','T','\0'}},
292     {TMT_OFFSETTYPE,OT_MIDDLERIGHT,{'M','I','D','D','L','E','R','I','G','H','T','\0'}},
293     {TMT_OFFSETTYPE,OT_LEFTOFCAPTION,{'L','E','F','T','O','F','C','A','P','T','I','O','N','\0'}},
294     {TMT_OFFSETTYPE,OT_RIGHTOFCAPTION,{'R','I','G','H','T','O','F','C','A','P','T','I','O','N','\0'}},
295     {TMT_OFFSETTYPE,OT_LEFTOFLASTBUTTON,{'L','E','F','T','O','F','L','A','S','T','B','U','T','T','O','N','\0'}},
296     {TMT_OFFSETTYPE,OT_RIGHTOFLASTBUTTON,{'R','I','G','H','T','O','F','L','A','S','T','B','U','T','T','O','N','\0'}},
297     {TMT_OFFSETTYPE,OT_ABOVELASTBUTTON,{'A','B','O','V','E','L','A','S','T','B','U','T','T','O','N','\0'}},
298     {TMT_OFFSETTYPE,OT_BELOWLASTBUTTON,{'B','E','L','O','W','L','A','S','T','B','U','T','T','O','N','\0'}},
299     {TMT_ICONEFFECT,ICE_NONE,{'N','O','N','E','\0'}},
300     {TMT_ICONEFFECT,ICE_GLOW,{'G','L','O','W','\0'}},
301     {TMT_ICONEFFECT,ICE_SHADOW,{'S','H','A','D','O','W','\0'}},
302     {TMT_ICONEFFECT,ICE_PULSE,{'P','U','L','S','E','\0'}},
303     {TMT_ICONEFFECT,ICE_ALPHA,{'A','L','P','H','A','\0'}},
304     {TMT_TEXTSHADOWTYPE,TST_NONE,{'N','O','N','E','\0'}},
305     {TMT_TEXTSHADOWTYPE,TST_SINGLE,{'S','I','N','G','L','E','\0'}},
306     {TMT_TEXTSHADOWTYPE,TST_CONTINUOUS,{'C','O','N','T','I','N','U','O','U','S','\0'}},
307     {TMT_GLYPHTYPE,GT_NONE,{'N','O','N','E','\0'}},
308     {TMT_GLYPHTYPE,GT_IMAGEGLYPH,{'I','M','A','G','E','G','L','Y','P','H','\0'}},
309     {TMT_GLYPHTYPE,GT_FONTGLYPH,{'F','O','N','T','G','L','Y','P','H','\0'}},
310     {TMT_IMAGESELECTTYPE,IST_NONE,{'N','O','N','E','\0'}},
311     {TMT_IMAGESELECTTYPE,IST_SIZE,{'S','I','Z','E','\0'}},
312     {TMT_IMAGESELECTTYPE,IST_DPI,{'D','P','I','\0'}},
313     {TMT_TRUESIZESCALINGTYPE,TSST_NONE,{'N','O','N','E','\0'}},
314     {TMT_TRUESIZESCALINGTYPE,TSST_SIZE,{'S','I','Z','E','\0'}},
315     {TMT_TRUESIZESCALINGTYPE,TSST_DPI,{'D','P','I','\0'}},
316     {TMT_GLYPHFONTSIZINGTYPE,GFST_NONE,{'N','O','N','E','\0'}},
317     {TMT_GLYPHFONTSIZINGTYPE,GFST_SIZE,{'S','I','Z','E','\0'}},
318     {TMT_GLYPHFONTSIZINGTYPE,GFST_DPI,{'D','P','I','\0'}},
319     {0,0,{'\0'}}
320 };
321
322
323 /***********************************************************************
324  * Classes defined below
325  * Defined as PartID,StateID,TextName
326  * If StateID == 0 then its a part being defined
327  */
328
329 /* These are globals to all classes, but its treated as a separate class */
330 static const MSSTYLES_CLASS_MAP classGlobals[] = {
331     {GP_BORDER,0,{'B','O','R','D','E','R','\0'}},
332     {GP_BORDER,BSS_FLAT,{'F','L','A','T','\0'}},
333     {GP_BORDER,BSS_RAISED,{'R','A','I','S','E','D','\0'}},
334     {GP_BORDER,BSS_SUNKEN,{'S','U','N','K','E','N','\0'}},
335     {GP_LINEHORZ,0,{'L','I','N','E','H','O','R','Z','\0'}},
336     {GP_LINEHORZ,LHS_FLAT,{'F','L','A','T','\0'}},
337     {GP_LINEHORZ,LHS_RAISED,{'R','A','I','S','E','D','\0'}},
338     {GP_LINEHORZ,LHS_SUNKEN,{'S','U','N','K','E','N','\0'}},
339     {GP_LINEVERT,0,{'L','I','N','E','V','E','R','T','\0'}},
340     {GP_LINEVERT,LVS_FLAT,{'F','L','A','T','\0'}},
341     {GP_LINEVERT,LVS_RAISED,{'R','A','I','S','E','D','\0'}},
342     {GP_LINEVERT,LVS_SUNKEN,{'S','U','N','K','E','N','\0'}},
343     {0,0,{'\0'}}
344 };
345
346 static const MSSTYLES_CLASS_MAP classButton[] = {
347     {BP_PUSHBUTTON,0,{'P','U','S','H','B','U','T','T','O','N','\0'}},
348     {BP_PUSHBUTTON,PBS_NORMAL,{'N','O','R','M','A','L','\0'}},
349     {BP_PUSHBUTTON,PBS_HOT,{'H','O','T','\0'}},
350     {BP_PUSHBUTTON,PBS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
351     {BP_PUSHBUTTON,PBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
352     {BP_PUSHBUTTON,PBS_DEFAULTED,{'D','E','F','A','U','L','T','E','D','\0'}},
353     {BP_RADIOBUTTON,0,{'R','A','D','I','O','B','U','T','T','O','N','\0'}},
354     {BP_RADIOBUTTON,RBS_UNCHECKEDNORMAL,{'U','N','C','H','E','C','K','E','D','N','O','R','M','A','L','\0'}},
355     {BP_RADIOBUTTON,RBS_UNCHECKEDHOT,{'U','N','C','H','E','C','K','E','D','H','O','T','\0'}},
356     {BP_RADIOBUTTON,RBS_UNCHECKEDPRESSED,{'U','N','C','H','E','C','K','E','D','P','R','E','S','S','E','D','\0'}},
357     {BP_RADIOBUTTON,RBS_UNCHECKEDDISABLED,{'U','N','C','H','E','C','K','E','D','D','I','S','A','B','L','E','D','\0'}},
358     {BP_RADIOBUTTON,RBS_CHECKEDNORMAL,{'C','H','E','C','K','E','D','N','O','R','M','A','L','\0'}},
359     {BP_RADIOBUTTON,RBS_CHECKEDHOT,{'C','H','E','C','K','E','D','H','O','T','\0'}},
360     {BP_RADIOBUTTON,RBS_CHECKEDPRESSED,{'C','H','E','C','K','E','D','P','R','E','S','S','E','D','\0'}},
361     {BP_RADIOBUTTON,RBS_CHECKEDDISABLED,{'C','H','E','C','K','E','D','D','I','S','A','B','L','E','D','\0'}},
362     {BP_CHECKBOX,0,{'C','H','E','C','K','B','O','X','\0'}},
363     {BP_RADIOBUTTON,CBS_UNCHECKEDNORMAL,{'U','N','C','H','E','C','K','E','D','N','O','R','M','A','L','\0'}},
364     {BP_RADIOBUTTON,CBS_UNCHECKEDHOT,{'U','N','C','H','E','C','K','E','D','H','O','T','\0'}},
365     {BP_RADIOBUTTON,CBS_UNCHECKEDPRESSED,{'U','N','C','H','E','C','K','E','D','P','R','E','S','S','E','D','\0'}},
366     {BP_RADIOBUTTON,CBS_UNCHECKEDDISABLED,{'U','N','C','H','E','C','K','E','D','D','I','S','A','B','L','E','D','\0'}},
367     {BP_RADIOBUTTON,CBS_CHECKEDNORMAL,{'C','H','E','C','K','E','D','N','O','R','M','A','L','\0'}},
368     {BP_RADIOBUTTON,CBS_CHECKEDHOT,{'C','H','E','C','K','E','D','H','O','T','\0'}},
369     {BP_RADIOBUTTON,CBS_CHECKEDPRESSED,{'C','H','E','C','K','E','D','P','R','E','S','S','E','D','\0'}},
370     {BP_RADIOBUTTON,CBS_CHECKEDDISABLED,{'C','H','E','C','K','E','D','D','I','S','A','B','L','E','D','\0'}},
371     {BP_RADIOBUTTON,CBS_MIXEDNORMAL,{'M','I','X','E','D','N','O','R','M','A','L','\0'}},
372     {BP_RADIOBUTTON,CBS_MIXEDHOT,{'M','I','X','E','D','H','O','T','\0'}},
373     {BP_RADIOBUTTON,CBS_MIXEDPRESSED,{'M','I','X','E','D','P','R','E','S','S','E','D','\0'}},
374     {BP_RADIOBUTTON,CBS_MIXEDDISABLED,{'M','I','X','E','D','D','I','S','A','B','L','E','D','\0'}},
375     {BP_GROUPBOX,0,{'G','R','O','U','P','B','O','X','\0'}},
376     {BP_RADIOBUTTON,GBS_NORMAL,{'N','O','R','M','A','L','\0'}},
377     {BP_RADIOBUTTON,GBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
378     {BP_USERBUTTON,0,{'U','S','E','R','B','U','T','T','O','N','\0'}},
379     {0,0,{'\0'}}
380 };
381
382 static const MSSTYLES_CLASS_MAP classClock[] = {
383     {CLP_TIME,0,{'T','I','M','E','\0'}},
384     {CLP_TIME,CLS_NORMAL,{'N','O','R','M','A','L','\0'}},
385     {0,0,{'\0'}}
386 };
387
388 static const MSSTYLES_CLASS_MAP classCombobox[] = {
389     {CP_DROPDOWNBUTTON,0,{'D','R','O','P','D','O','W','N','B','U','T','T','O','N','\0'}},
390     {CP_DROPDOWNBUTTON,CBXS_NORMAL,{'N','O','R','M','A','L','\0'}},
391     {CP_DROPDOWNBUTTON,CBXS_HOT,{'H','O','T','\0'}},
392     {CP_DROPDOWNBUTTON,CBXS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
393     {CP_DROPDOWNBUTTON,CBXS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
394     {0,0,{'\0'}}
395 };
396
397 static const MSSTYLES_CLASS_MAP classEdit[] = {
398     {EP_EDITTEXT,0,{'E','D','I','T','T','E','X','T','\0'}},
399     {EP_EDITTEXT,ETS_NORMAL,{'N','O','R','M','A','L','\0'}},
400     {EP_EDITTEXT,ETS_HOT,{'H','O','T','\0'}},
401     {EP_EDITTEXT,ETS_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
402     {EP_EDITTEXT,ETS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
403     {EP_EDITTEXT,ETS_FOCUSED,{'F','O','C','U','S','E','D','\0'}},
404     {EP_EDITTEXT,ETS_READONLY,{'R','E','A','D','O','N','L','Y','\0'}},
405     {EP_EDITTEXT,ETS_ASSIST,{'A','S','S','I','S','T','\0'}},
406     {EP_CARET,0,{'C','A','R','E','T','\0'}},
407     {0,0,{'\0'}}
408 };
409
410 static const MSSTYLES_CLASS_MAP classExplorerbar[] = {
411     {EBP_HEADERBACKGROUND,0,{'H','E','A','D','E','R','B','A','C','K','G','R','O','U','N','D','\0'}},
412     {EBP_HEADERCLOSE,0,{'H','E','A','D','E','R','C','L','O','S','E','\0'}},
413     {EBP_HEADERCLOSE,EBHC_NORMAL,{'N','O','R','M','A','L','\0'}},
414     {EBP_HEADERCLOSE,EBHC_HOT,{'H','O','T','\0'}},
415     {EBP_HEADERCLOSE,EBHC_PRESSED,{'P','R','E','S','S','E','D','\0'}},
416     {EBP_HEADERPIN,0,{'H','E','A','D','E','R','P','I','N','\0'}},
417     {EBP_HEADERPIN,EBHP_NORMAL,{'N','O','R','M','A','L','\0'}},
418     {EBP_HEADERPIN,EBHP_HOT,{'H','O','T','\0'}},
419     {EBP_HEADERPIN,EBHP_PRESSED,{'P','R','E','S','S','E','D','\0'}},
420     {EBP_HEADERPIN,EBHP_SELECTEDNORMAL,{'S','E','L','E','C','T','E','D','N','O','R','M','A','L','\0'}},
421     {EBP_HEADERPIN,EBHP_SELECTEDHOT,{'S','E','L','E','C','T','E','D','H','O','T','\0'}},
422     {EBP_HEADERPIN,EBHP_SELECTEDPRESSED,{'S','E','L','E','C','T','E','D','P','R','E','S','S','E','D','\0'}},
423     {EBP_IEBARMENU,0,{'I','E','B','A','R','M','E','N','U','\0'}},
424     {EBP_IEBARMENU,EBM_NORMAL,{'N','O','R','M','A','L','\0'}},
425     {EBP_IEBARMENU,EBM_HOT,{'H','O','T','\0'}},
426     {EBP_IEBARMENU,EBM_PRESSED,{'P','R','E','S','S','E','D','\0'}},
427     {EBP_NORMALGROUPBACKGROUND,0,{'N','O','R','M','A','L','G','R','O','U','P','B','A','C','K','G','R','O','U','N','D','\0'}},
428     {EBP_NORMALGROUPCOLLAPSE,0,{'N','O','R','M','A','L','G','R','O','U','P','C','O','L','L','A','P','S','E','\0'}},
429     {EBP_NORMALGROUPCOLLAPSE,EBNGC_NORMAL,{'N','O','R','M','A','L','\0'}},
430     {EBP_NORMALGROUPCOLLAPSE,EBNGC_HOT,{'H','O','T','\0'}},
431     {EBP_NORMALGROUPCOLLAPSE,EBNGC_PRESSED,{'P','R','E','S','S','E','D','\0'}},
432     {EBP_NORMALGROUPEXPAND,0,{'N','O','R','M','A','L','G','R','O','U','P','E','X','P','A','N','D','\0'}},
433     {EBP_NORMALGROUPEXPAND,EBNGE_NORMAL,{'N','O','R','M','A','L','\0'}},
434     {EBP_NORMALGROUPEXPAND,EBNGE_HOT,{'H','O','T','\0'}},
435     {EBP_NORMALGROUPEXPAND,EBNGE_PRESSED,{'P','R','E','S','S','E','D','\0'}},
436     {EBP_NORMALGROUPHEAD,0,{'N','O','R','M','A','L','G','R','O','U','P','H','E','A','D','\0'}},
437     {EBP_SPECIALGROUPBACKGROUND,0,{'S','P','E','C','I','A','L','G','R','O','U','P','B','A','C','K','G','R','O','U','N','D','\0'}},
438     {EBP_SPECIALGROUPCOLLAPSE,0,{'S','P','E','C','I','A','L','G','R','O','U','P','C','O','L','L','A','P','S','E','\0'}},
439     {EBP_SPECIALGROUPCOLLAPSE,EBSGC_NORMAL,{'N','O','R','M','A','L','\0'}},
440     {EBP_SPECIALGROUPCOLLAPSE,EBSGC_HOT,{'H','O','T','\0'}},
441     {EBP_SPECIALGROUPCOLLAPSE,EBSGC_PRESSED,{'P','R','E','S','S','E','D','\0'}},
442     {EBP_SPECIALGROUPEXPAND,0,{'S','P','E','C','I','A','L','G','R','O','U','P','E','X','P','A','N','D','\0'}},
443     {EBP_SPECIALGROUPEXPAND,EBSGE_NORMAL,{'N','O','R','M','A','L','\0'}},
444     {EBP_SPECIALGROUPEXPAND,EBSGE_HOT,{'H','O','T','\0'}},
445     {EBP_SPECIALGROUPEXPAND,EBSGE_PRESSED,{'P','R','E','S','S','E','D','\0'}},
446     {EBP_SPECIALGROUPHEAD,0,{'S','P','E','C','I','A','L','G','R','O','U','P','H','E','A','D','\0'}},
447     {0,0,{'\0'}}
448 };
449
450 static const MSSTYLES_CLASS_MAP classHeader[] = {
451     {HP_HEADERITEM,0,{'H','E','A','D','E','R','I','T','E','M','\0'}},
452     {HP_HEADERITEM,HIS_NORMAL,{'N','O','R','M','A','L','\0'}},
453     {HP_HEADERITEM,HIS_HOT,{'H','O','T','\0'}},
454     {HP_HEADERITEM,HIS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
455     {HP_HEADERITEMLEFT,0,{'H','E','A','D','E','R','I','T','E','M','L','E','F','T','\0'}},
456     {HP_HEADERITEMLEFT,HILS_NORMAL,{'N','O','R','M','A','L','\0'}},
457     {HP_HEADERITEMLEFT,HILS_HOT,{'H','O','T','\0'}},
458     {HP_HEADERITEMLEFT,HILS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
459     {HP_HEADERITEMRIGHT,0,{'H','E','A','D','E','R','I','T','E','M','R','I','G','H','T','\0'}},
460     {HP_HEADERITEMRIGHT,HIRS_NORMAL,{'N','O','R','M','A','L','\0'}},
461     {HP_HEADERITEMRIGHT,HIRS_HOT,{'H','O','T','\0'}},
462     {HP_HEADERITEMRIGHT,HIRS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
463     {HP_HEADERSORTARROW,0,{'H','E','A','D','E','R','S','O','R','T','A','R','R','O','W','\0'}},
464     {HP_HEADERSORTARROW,HSAS_SORTEDUP,{'S','O','R','T','E','D','U','P','\0'}},
465     {HP_HEADERSORTARROW,HSAS_SORTEDDOWN,{'S','O','R','T','E','D','D','O','W','N','\0'}},
466     {0,0,{'\0'}}
467 };
468
469 static const MSSTYLES_CLASS_MAP classListview[] = {
470     {LVP_LISTITEM,0,{'L','I','S','T','I','T','E','M','\0'}},
471     {LVP_LISTITEM,LIS_NORMAL,{'N','O','R','M','A','L','\0'}},
472     {LVP_LISTITEM,LIS_HOT,{'H','O','T','\0'}},
473     {LVP_LISTITEM,LIS_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
474     {LVP_LISTITEM,LIS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
475     {LVP_LISTITEM,LIS_SELECTEDNOTFOCUS,{'S','E','L','E','C','T','E','D','N','O','T','F','O','C','U','S','\0'}},
476     {LVP_LISTGROUP,0,{'L','I','S','T','G','R','O','U','P','\0'}},
477     {LVP_LISTDETAIL,0,{'L','I','S','T','D','E','T','A','I','L','\0'}},
478     {LVP_LISTSORTEDDETAIL,0,{'L','I','S','T','S','O','R','T','E','D','D','E','T','A','I','L','\0'}},
479     {LVP_EMPTYTEXT,0,{'E','M','P','T','Y','T','E','X','T','\0'}},
480     {0,0,{'\0'}}
481 };
482
483 static const MSSTYLES_CLASS_MAP classMenu[] = {
484     {MP_MENUITEM,0,{'M','E','N','U','I','T','E','M','\0'}},
485     {MP_MENUITEM,MS_NORMAL,{'N','O','R','M','A','L','\0'}},
486     {MP_MENUITEM,MS_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
487     {MP_MENUITEM,MS_DEMOTED,{'D','E','M','O','T','E','D','\0'}},
488     {MP_MENUDROPDOWN,0,{'M','E','N','U','D','R','O','P','D','O','W','N','\0'}},
489     {MP_MENUDROPDOWN,MS_NORMAL,{'N','O','R','M','A','L','\0'}},
490     {MP_MENUDROPDOWN,MS_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
491     {MP_MENUDROPDOWN,MS_DEMOTED,{'D','E','M','O','T','E','D','\0'}},
492     {MP_MENUBARITEM,0,{'M','E','N','U','B','A','R','I','T','E','M','\0'}},
493     {MP_MENUBARITEM,MS_NORMAL,{'N','O','R','M','A','L','\0'}},
494     {MP_MENUBARITEM,MS_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
495     {MP_MENUBARITEM,MS_DEMOTED,{'D','E','M','O','T','E','D','\0'}},
496     {MP_MENUBARDROPDOWN,0,{'M','E','N','U','B','A','R','D','R','O','P','D','O','W','N','\0'}},
497     {MP_MENUBARDROPDOWN,MS_NORMAL,{'N','O','R','M','A','L','\0'}},
498     {MP_MENUBARDROPDOWN,MS_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
499     {MP_MENUBARDROPDOWN,MS_DEMOTED,{'D','E','M','O','T','E','D','\0'}},
500     {MP_CHEVRON,0,{'C','H','E','V','R','O','N','\0'}},
501     {MP_CHEVRON,MS_NORMAL,{'N','O','R','M','A','L','\0'}},
502     {MP_CHEVRON,MS_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
503     {MP_CHEVRON,MS_DEMOTED,{'D','E','M','O','T','E','D','\0'}},
504     {MP_SEPARATOR,0,{'S','E','P','A','R','A','T','O','R','\0'}},
505     {MP_SEPARATOR,MS_NORMAL,{'N','O','R','M','A','L','\0'}},
506     {MP_SEPARATOR,MS_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
507     {MP_SEPARATOR,MS_DEMOTED,{'D','E','M','O','T','E','D','\0'}},
508     {0,0,{'\0'}}
509 };
510
511 static const MSSTYLES_CLASS_MAP classMenuband[] = {
512     {MDP_NEWAPPBUTTON,0,{'N','E','W','A','P','P','B','U','T','T','O','N','\0'}},
513     {MDP_NEWAPPBUTTON,MDS_NORMAL,{'N','O','R','M','A','L','\0'}},
514     {MDP_NEWAPPBUTTON,MDS_HOT,{'H','O','T','\0'}},
515     {MDP_NEWAPPBUTTON,MDS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
516     {MDP_NEWAPPBUTTON,MDS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
517     {MDP_NEWAPPBUTTON,MDS_CHECKED,{'C','H','E','C','K','E','D','\0'}},
518     {MDP_NEWAPPBUTTON,MDS_HOTCHECKED,{'H','O','T','C','H','E','C','K','E','D','\0'}},
519     {MDP_SEPERATOR,0,{'S','E','P','E','R','A','T','O','R','\0'}},
520     {0,0,{'\0'}}
521 };
522
523 static const MSSTYLES_CLASS_MAP classPage[] = {
524     {PGRP_UP,0,{'U','P','\0'}},
525     {PGRP_UP,UPS_NORMAL,{'N','O','R','M','A','L','\0'}},
526     {PGRP_UP,UPS_HOT,{'H','O','T','\0'}},
527     {PGRP_UP,UPS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
528     {PGRP_UP,UPS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
529     {PGRP_DOWN,0,{'D','O','W','N','\0'}},
530     {PGRP_DOWN,DNS_NORMAL,{'N','O','R','M','A','L','\0'}},
531     {PGRP_DOWN,DNS_HOT,{'H','O','T','\0'}},
532     {PGRP_DOWN,DNS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
533     {PGRP_DOWN,DNS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
534     {PGRP_UPHORZ,0,{'U','P','H','O','R','Z','\0'}},
535     {PGRP_UPHORZ,UPHZS_NORMAL,{'N','O','R','M','A','L','\0'}},
536     {PGRP_UPHORZ,UPHZS_HOT,{'H','O','T','\0'}},
537     {PGRP_UPHORZ,UPHZS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
538     {PGRP_UPHORZ,UPHZS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
539     {PGRP_DOWNHORZ,0,{'D','O','W','N','H','O','R','Z','\0'}},
540     {PGRP_DOWNHORZ,DNHZS_NORMAL,{'N','O','R','M','A','L','\0'}},
541     {PGRP_DOWNHORZ,DNHZS_HOT,{'H','O','T','\0'}},
542     {PGRP_DOWNHORZ,DNHZS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
543     {PGRP_DOWNHORZ,DNHZS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
544     {0,0,{'\0'}}
545 };
546
547 static const MSSTYLES_CLASS_MAP classProgress[] = {
548     {PP_BAR,0,{'B','A','R','\0'}},
549     {PP_BARVERT,0,{'B','A','R','V','E','R','T','\0'}},
550     {PP_CHUNK,0,{'C','H','U','N','K','\0'}},
551     {PP_CHUNKVERT,0,{'C','H','U','N','K','V','E','R','T','\0'}},
552     {0,0,{'\0'}}
553 };
554
555 static const MSSTYLES_CLASS_MAP classRebar[] = {
556     {RP_GRIPPER,0,{'G','R','I','P','P','E','R','\0'}},
557     {RP_GRIPPERVERT,0,{'G','R','I','P','P','E','R','V','E','R','T','\0'}},
558     {RP_BAND,0,{'B','A','N','D','\0'}},
559     {RP_CHEVRON,0,{'C','H','E','V','R','O','N','\0'}},
560     {RP_CHEVRON,CHEVS_NORMAL,{'N','O','R','M','A','L','\0'}},
561     {RP_CHEVRON,CHEVS_HOT,{'H','O','T','\0'}},
562     {RP_CHEVRON,CHEVS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
563     {RP_CHEVRONVERT,0,{'C','H','E','V','R','O','N','V','E','R','T','\0'}},
564     {0,0,{'\0'}}
565 };
566
567 static const MSSTYLES_CLASS_MAP classScrollbar[] = {
568     {SBP_ARROWBTN,0,{'A','R','R','O','W','B','T','N','\0'}},
569     {SBP_ARROWBTN,ABS_UPNORMAL,{'U','P','N','O','R','M','A','L','\0'}},
570     {SBP_ARROWBTN,ABS_UPHOT,{'U','P','H','O','T','\0'}},
571     {SBP_ARROWBTN,ABS_UPPRESSED,{'U','P','P','R','E','S','S','E','D','\0'}},
572     {SBP_ARROWBTN,ABS_UPDISABLED,{'U','P','D','I','S','A','B','L','E','D','\0'}},
573     {SBP_ARROWBTN,ABS_DOWNNORMAL,{'D','O','W','N','N','O','R','M','A','L','\0'}},
574     {SBP_ARROWBTN,ABS_DOWNHOT,{'D','O','W','N','H','O','T','\0'}},
575     {SBP_ARROWBTN,ABS_DOWNPRESSED,{'D','O','W','N','P','R','E','S','S','E','D','\0'}},
576     {SBP_ARROWBTN,ABS_DOWNDISABLED,{'D','O','W','N','D','I','S','A','B','L','E','D','\0'}},
577     {SBP_ARROWBTN,ABS_LEFTNORMAL,{'L','E','F','T','N','O','R','M','A','L','\0'}},
578     {SBP_ARROWBTN,ABS_LEFTHOT,{'L','E','F','T','H','O','T','\0'}},
579     {SBP_ARROWBTN,ABS_LEFTPRESSED,{'L','E','F','T','P','R','E','S','S','E','D','\0'}},
580     {SBP_ARROWBTN,ABS_LEFTDISABLED,{'L','E','F','T','D','I','S','A','B','L','E','D','\0'}},
581     {SBP_ARROWBTN,ABS_RIGHTNORMAL,{'R','I','G','H','T','N','O','R','M','A','L','\0'}},
582     {SBP_ARROWBTN,ABS_RIGHTHOT,{'R','I','G','H','T','H','O','T','\0'}},
583     {SBP_ARROWBTN,ABS_RIGHTPRESSED,{'R','I','G','H','T','P','R','E','S','S','E','D','\0'}},
584     {SBP_ARROWBTN,ABS_RIGHTDISABLED,{'R','I','G','H','T','D','I','S','A','B','L','E','D','\0'}},
585     {SBP_THUMBBTNHORZ,0,{'T','H','U','M','B','B','T','N','H','O','R','Z','\0'}},
586     {SBP_THUMBBTNHORZ,SCRBS_NORMAL,{'N','O','R','M','A','L','\0'}},
587     {SBP_THUMBBTNHORZ,SCRBS_HOT,{'H','O','T','\0'}},
588     {SBP_THUMBBTNHORZ,SCRBS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
589     {SBP_THUMBBTNHORZ,SCRBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
590     {SBP_THUMBBTNVERT,0,{'T','H','U','M','B','B','T','N','V','E','R','T','\0'}},
591     {SBP_THUMBBTNVERT,SCRBS_NORMAL,{'N','O','R','M','A','L','\0'}},
592     {SBP_THUMBBTNVERT,SCRBS_HOT,{'H','O','T','\0'}},
593     {SBP_THUMBBTNVERT,SCRBS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
594     {SBP_THUMBBTNVERT,SCRBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
595     {SBP_LOWERTRACKHORZ,0,{'L','O','W','E','R','T','R','A','C','K','H','O','R','Z','\0'}},
596     {SBP_LOWERTRACKHORZ,SCRBS_NORMAL,{'N','O','R','M','A','L','\0'}},
597     {SBP_LOWERTRACKHORZ,SCRBS_HOT,{'H','O','T','\0'}},
598     {SBP_LOWERTRACKHORZ,SCRBS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
599     {SBP_LOWERTRACKHORZ,SCRBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
600     {SBP_UPPERTRACKHORZ,0,{'U','P','P','E','R','T','R','A','C','K','H','O','R','Z','\0'}},
601     {SBP_UPPERTRACKHORZ,SCRBS_NORMAL,{'N','O','R','M','A','L','\0'}},
602     {SBP_UPPERTRACKHORZ,SCRBS_HOT,{'H','O','T','\0'}},
603     {SBP_UPPERTRACKHORZ,SCRBS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
604     {SBP_UPPERTRACKHORZ,SCRBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
605     {SBP_LOWERTRACKVERT,0,{'L','O','W','E','R','T','R','A','C','K','V','E','R','T','\0'}},
606     {SBP_LOWERTRACKVERT,SCRBS_NORMAL,{'N','O','R','M','A','L','\0'}},
607     {SBP_LOWERTRACKVERT,SCRBS_HOT,{'H','O','T','\0'}},
608     {SBP_LOWERTRACKVERT,SCRBS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
609     {SBP_LOWERTRACKVERT,SCRBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
610     {SBP_UPPERTRACKVERT,0,{'U','P','P','E','R','T','R','A','C','K','V','E','R','T','\0'}},
611     {SBP_UPPERTRACKVERT,SCRBS_NORMAL,{'N','O','R','M','A','L','\0'}},
612     {SBP_UPPERTRACKVERT,SCRBS_HOT,{'H','O','T','\0'}},
613     {SBP_UPPERTRACKVERT,SCRBS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
614     {SBP_UPPERTRACKVERT,SCRBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
615     {SBP_GRIPPERHORZ,0,{'G','R','I','P','P','E','R','H','O','R','Z','\0'}},
616     {SBP_GRIPPERVERT,0,{'G','R','I','P','P','E','R','V','E','R','T','\0'}},
617     {SBP_SIZEBOX,0,{'S','I','Z','E','B','O','X','\0'}},
618     {SBP_SIZEBOX,SZB_RIGHTALIGN,{'R','I','G','H','T','A','L','I','G','N','\0'}},
619     {SBP_SIZEBOX,SZB_LEFTALIGN,{'L','E','F','T','A','L','I','G','N','\0'}},
620     {0,0,{'\0'}}
621 };
622
623 static const MSSTYLES_CLASS_MAP classSpin[] = {
624     {SPNP_UP,0,{'U','P','\0'}},
625     {SPNP_UP,UPS_NORMAL,{'N','O','R','M','A','L','\0'}},
626     {SPNP_UP,UPS_HOT,{'H','O','T','\0'}},
627     {SPNP_UP,UPS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
628     {SPNP_UP,UPS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
629     {SPNP_DOWN,0,{'D','O','W','N','\0'}},
630     {SPNP_DOWN,DNS_NORMAL,{'N','O','R','M','A','L','\0'}},
631     {SPNP_DOWN,DNS_HOT,{'H','O','T','\0'}},
632     {SPNP_DOWN,DNS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
633     {SPNP_DOWN,DNS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
634     {SPNP_UPHORZ,0,{'U','P','H','O','R','Z','\0'}},
635     {SPNP_UPHORZ,UPHZS_NORMAL,{'N','O','R','M','A','L','\0'}},
636     {SPNP_UPHORZ,UPHZS_HOT,{'H','O','T','\0'}},
637     {SPNP_UPHORZ,UPHZS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
638     {SPNP_UPHORZ,UPHZS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
639     {SPNP_DOWNHORZ,0,{'D','O','W','N','H','O','R','Z','\0'}},
640     {SPNP_DOWNHORZ,DNHZS_NORMAL,{'N','O','R','M','A','L','\0'}},
641     {SPNP_DOWNHORZ,DNHZS_HOT,{'H','O','T','\0'}},
642     {SPNP_DOWNHORZ,DNHZS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
643     {SPNP_DOWNHORZ,DNHZS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
644     {0,0,{'\0'}}
645 };
646
647 static const MSSTYLES_CLASS_MAP classStartpanel[] = {
648     {SPP_USERPANE,0,{'U','S','E','R','P','A','N','E','\0'}},
649     {SPP_MOREPROGRAMS,0,{'M','O','R','E','P','R','O','G','R','A','M','S','\0'}},
650     {SPP_MOREPROGRAMSARROW,0,{'M','O','R','E','P','R','O','G','R','A','M','S','A','R','R','O','W','\0'}},
651     {SPP_MOREPROGRAMSARROW,SPS_NORMAL,{'N','O','R','M','A','L','\0'}},
652     {SPP_MOREPROGRAMSARROW,SPS_HOT,{'H','O','T','\0'}},
653     {SPP_MOREPROGRAMSARROW,SPS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
654     {SPP_PROGLIST,0,{'P','R','O','G','L','I','S','T','\0'}},
655     {SPP_PROGLISTSEPARATOR,0,{'P','R','O','G','L','I','S','T','S','E','P','A','R','A','T','O','R','\0'}},
656     {SPP_PLACESLIST,0,{'P','L','A','C','E','S','L','I','S','T','\0'}},
657     {SPP_PLACESLISTSEPARATOR,0,{'P','L','A','C','E','S','L','I','S','T','S','E','P','A','R','A','T','O','R','\0'}},
658     {SPP_LOGOFF,0,{'L','O','G','O','F','F','\0'}},
659     {SPP_LOGOFFBUTTONS,0,{'L','O','G','O','F','F','B','U','T','T','O','N','S','\0'}},
660     {SPP_LOGOFFBUTTONS,SPLS_NORMAL,{'N','O','R','M','A','L','\0'}},
661     {SPP_LOGOFFBUTTONS,SPLS_HOT,{'H','O','T','\0'}},
662     {SPP_LOGOFFBUTTONS,SPLS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
663     {SPP_USERPICTURE,0,{'U','S','E','R','P','I','C','T','U','R','E','\0'}},
664     {SPP_PREVIEW,0,{'P','R','E','V','I','E','W','\0'}},
665     {0,0,{'\0'}}
666 };
667
668 static const MSSTYLES_CLASS_MAP classStatus[] = {
669     {SP_PANE,0,{'P','A','N','E','\0'}},
670     {SP_GRIPPERPANE,0,{'G','R','I','P','P','E','R','P','A','N','E','\0'}},
671     {SP_GRIPPER,0,{'G','R','I','P','P','E','R','\0'}},
672     {0,0,{'\0'}}
673 };
674
675 static const MSSTYLES_CLASS_MAP classTab[] = {
676     {TABP_TABITEM,0,{'T','A','B','I','T','E','M','\0'}},
677     {TABP_TABITEM,TIS_NORMAL,{'N','O','R','M','A','L','\0'}},
678     {TABP_TABITEM,TIS_HOT,{'H','O','T','\0'}},
679     {TABP_TABITEM,TIS_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
680     {TABP_TABITEM,TIS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
681     {TABP_TABITEM,TIS_FOCUSED,{'F','O','C','U','S','E','D','\0'}},
682     {TABP_TABITEMLEFTEDGE,0,{'T','A','B','I','T','E','M','L','E','F','T','E','D','G','E','\0'}},
683     {TABP_TABITEMLEFTEDGE,TILES_NORMAL,{'N','O','R','M','A','L','\0'}},
684     {TABP_TABITEMLEFTEDGE,TILES_HOT,{'H','O','T','\0'}},
685     {TABP_TABITEMLEFTEDGE,TILES_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
686     {TABP_TABITEMLEFTEDGE,TILES_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
687     {TABP_TABITEMLEFTEDGE,TILES_FOCUSED,{'F','O','C','U','S','E','D','\0'}},
688     {TABP_TABITEMRIGHTEDGE,0,{'T','A','B','I','T','E','M','R','I','G','H','T','E','D','G','E','\0'}},
689     {TABP_TABITEMRIGHTEDGE,TIRES_NORMAL,{'N','O','R','M','A','L','\0'}},
690     {TABP_TABITEMRIGHTEDGE,TIRES_HOT,{'H','O','T','\0'}},
691     {TABP_TABITEMRIGHTEDGE,TIRES_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
692     {TABP_TABITEMRIGHTEDGE,TIRES_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
693     {TABP_TABITEMRIGHTEDGE,TIRES_FOCUSED,{'F','O','C','U','S','E','D','\0'}},
694     {TABP_TABITEMBOTHEDGE,0,{'T','A','B','I','T','E','M','B','O','T','H','E','D','G','E','\0'}},
695     {TABP_TABITEMBOTHEDGE,TIBES_NORMAL,{'N','O','R','M','A','L','\0'}},
696     {TABP_TABITEMBOTHEDGE,TIBES_HOT,{'H','O','T','\0'}},
697     {TABP_TABITEMBOTHEDGE,TIBES_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
698     {TABP_TABITEMBOTHEDGE,TIBES_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
699     {TABP_TABITEMBOTHEDGE,TIBES_FOCUSED,{'F','O','C','U','S','E','D','\0'}},
700     {TABP_TOPTABITEM,0,{'T','O','P','T','A','B','I','T','E','M','\0'}},
701     {TABP_TOPTABITEM,TTIS_NORMAL,{'N','O','R','M','A','L','\0'}},
702     {TABP_TOPTABITEM,TTIS_HOT,{'H','O','T','\0'}},
703     {TABP_TOPTABITEM,TTIS_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
704     {TABP_TOPTABITEM,TTIS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
705     {TABP_TOPTABITEM,TTIS_FOCUSED,{'F','O','C','U','S','E','D','\0'}},
706     {TABP_TOPTABITEMLEFTEDGE,0,{'T','O','P','T','A','B','I','T','E','M','L','E','F','T','E','D','G','E','\0'}},
707     {TABP_TOPTABITEMLEFTEDGE,TTILES_NORMAL,{'N','O','R','M','A','L','\0'}},
708     {TABP_TOPTABITEMLEFTEDGE,TTILES_HOT,{'H','O','T','\0'}},
709     {TABP_TOPTABITEMLEFTEDGE,TTILES_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
710     {TABP_TOPTABITEMLEFTEDGE,TTILES_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
711     {TABP_TOPTABITEMLEFTEDGE,TTILES_FOCUSED,{'F','O','C','U','S','E','D','\0'}},
712     {TABP_TOPTABITEMRIGHTEDGE,0,{'T','O','P','T','A','B','I','T','E','M','R','I','G','H','T','E','D','G','E','\0'}},
713     {TABP_TOPTABITEMRIGHTEDGE,TTIRES_NORMAL,{'N','O','R','M','A','L','\0'}},
714     {TABP_TOPTABITEMRIGHTEDGE,TTIRES_HOT,{'H','O','T','\0'}},
715     {TABP_TOPTABITEMRIGHTEDGE,TTIRES_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
716     {TABP_TOPTABITEMRIGHTEDGE,TTIRES_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
717     {TABP_TOPTABITEMRIGHTEDGE,TTIRES_FOCUSED,{'F','O','C','U','S','E','D','\0'}},
718     {TABP_TOPTABITEMBOTHEDGE,0,{'T','O','P','T','A','B','I','T','E','M','B','O','T','H','E','D','G','E','\0'}},
719     {TABP_TOPTABITEMBOTHEDGE,TTIBES_NORMAL,{'N','O','R','M','A','L','\0'}},
720     {TABP_TOPTABITEMBOTHEDGE,TTIBES_HOT,{'H','O','T','\0'}},
721     {TABP_TOPTABITEMBOTHEDGE,TTIBES_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
722     {TABP_TOPTABITEMBOTHEDGE,TTIBES_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
723     {TABP_TOPTABITEMBOTHEDGE,TTIBES_FOCUSED,{'F','O','C','U','S','E','D','\0'}},
724     {TABP_PANE,0,{'P','A','N','E','\0'}},
725     {TABP_BODY,0,{'B','O','D','Y','\0'}},
726     {0,0,{'\0'}}
727 };
728
729 static const MSSTYLES_CLASS_MAP classTaskband[] = {
730     {TDP_GROUPCOUNT,0,{'G','R','O','U','P','C','O','U','N','T','\0'}},
731     {TDP_FLASHBUTTON,0,{'F','L','A','S','H','B','U','T','T','O','N','\0'}},
732     {TDP_FLASHBUTTONGROUPMENU,0,{'F','L','A','S','H','B','U','T','T','O','N','G','R','O','U','P','M','E','N','U','\0'}},
733     {0,0,{'\0'}}
734 };
735
736 static const MSSTYLES_CLASS_MAP classTaskbar[] = {
737     {TBP_BACKGROUNDBOTTOM,0,{'B','A','C','K','G','R','O','U','N','D','B','O','T','T','O','M','\0'}},
738     {TBP_BACKGROUNDRIGHT,0,{'B','A','C','K','G','R','O','U','N','D','R','I','G','H','T','\0'}},
739     {TBP_BACKGROUNDTOP,0,{'B','A','C','K','G','R','O','U','N','D','T','O','P','\0'}},
740     {TBP_BACKGROUNDLEFT,0,{'B','A','C','K','G','R','O','U','N','D','L','E','F','T','\0'}},
741     {TBP_SIZINGBARBOTTOM,0,{'S','I','Z','I','N','G','B','A','R','B','O','T','T','O','M','\0'}},
742     {TBP_SIZINGBARRIGHT,0,{'S','I','Z','I','N','G','B','A','R','R','I','G','H','T','\0'}},
743     {TBP_SIZINGBARTOP,0,{'S','I','Z','I','N','G','B','A','R','T','O','P','\0'}},
744     {TBP_SIZINGBARLEFT,0,{'S','I','Z','I','N','G','B','A','R','L','E','F','T','\0'}},
745     {0,0,{'\0'}}
746 };
747
748 static const MSSTYLES_CLASS_MAP classToolbar[] = {
749     {TP_BUTTON,0,{'B','U','T','T','O','N','\0'}},
750     {TP_BUTTON,TS_NORMAL,{'N','O','R','M','A','L','\0'}},
751     {TP_BUTTON,TS_HOT,{'H','O','T','\0'}},
752     {TP_BUTTON,TS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
753     {TP_BUTTON,TS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
754     {TP_BUTTON,TS_CHECKED,{'C','H','E','C','K','E','D','\0'}},
755     {TP_BUTTON,TS_HOTCHECKED,{'H','O','T','C','H','E','C','K','E','D','\0'}},
756     {TP_DROPDOWNBUTTON,0,{'D','R','O','P','D','O','W','N','B','U','T','T','O','N','\0'}},
757     {TP_DROPDOWNBUTTON,TS_NORMAL,{'N','O','R','M','A','L','\0'}},
758     {TP_DROPDOWNBUTTON,TS_HOT,{'H','O','T','\0'}},
759     {TP_DROPDOWNBUTTON,TS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
760     {TP_DROPDOWNBUTTON,TS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
761     {TP_DROPDOWNBUTTON,TS_CHECKED,{'C','H','E','C','K','E','D','\0'}},
762     {TP_DROPDOWNBUTTON,TS_HOTCHECKED,{'H','O','T','C','H','E','C','K','E','D','\0'}},
763     {TP_SPLITBUTTON,0,{'S','P','L','I','T','B','U','T','T','O','N','\0'}},
764     {TP_SPLITBUTTON,TS_NORMAL,{'N','O','R','M','A','L','\0'}},
765     {TP_SPLITBUTTON,TS_HOT,{'H','O','T','\0'}},
766     {TP_SPLITBUTTON,TS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
767     {TP_SPLITBUTTON,TS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
768     {TP_SPLITBUTTON,TS_CHECKED,{'C','H','E','C','K','E','D','\0'}},
769     {TP_SPLITBUTTON,TS_HOTCHECKED,{'H','O','T','C','H','E','C','K','E','D','\0'}},
770     {TP_SPLITBUTTONDROPDOWN,0,{'S','P','L','I','T','B','U','T','T','O','N','D','R','O','P','D','O','W','N','\0'}},
771     {TP_SPLITBUTTONDROPDOWN,TS_NORMAL,{'N','O','R','M','A','L','\0'}},
772     {TP_SPLITBUTTONDROPDOWN,TS_HOT,{'H','O','T','\0'}},
773     {TP_SPLITBUTTONDROPDOWN,TS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
774     {TP_SPLITBUTTONDROPDOWN,TS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
775     {TP_SPLITBUTTONDROPDOWN,TS_CHECKED,{'C','H','E','C','K','E','D','\0'}},
776     {TP_SPLITBUTTONDROPDOWN,TS_HOTCHECKED,{'H','O','T','C','H','E','C','K','E','D','\0'}},
777     {TP_SEPARATOR,0,{'S','E','P','A','R','A','T','O','R','\0'}},
778     {TP_SEPARATOR,TS_NORMAL,{'N','O','R','M','A','L','\0'}},
779     {TP_SEPARATOR,TS_HOT,{'H','O','T','\0'}},
780     {TP_SEPARATOR,TS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
781     {TP_SEPARATOR,TS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
782     {TP_SEPARATOR,TS_CHECKED,{'C','H','E','C','K','E','D','\0'}},
783     {TP_SEPARATOR,TS_HOTCHECKED,{'H','O','T','C','H','E','C','K','E','D','\0'}},
784     {TP_SEPARATORVERT,0,{'S','E','P','A','R','A','T','O','R','V','E','R','T','\0'}},
785     {TP_SEPARATORVERT,TS_NORMAL,{'N','O','R','M','A','L','\0'}},
786     {TP_SEPARATORVERT,TS_HOT,{'H','O','T','\0'}},
787     {TP_SEPARATORVERT,TS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
788     {TP_SEPARATORVERT,TS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
789     {TP_SEPARATORVERT,TS_CHECKED,{'C','H','E','C','K','E','D','\0'}},
790     {TP_SEPARATORVERT,TS_HOTCHECKED,{'H','O','T','C','H','E','C','K','E','D','\0'}},
791     {0,0,{'\0'}}
792 };
793
794 static const MSSTYLES_CLASS_MAP classTooltip[] = {
795     {TTP_STANDARD,0,{'S','T','A','N','D','A','R','D','\0'}},
796     {TTP_STANDARD,TTSS_NORMAL,{'N','O','R','M','A','L','\0'}},
797     {TTP_STANDARD,TTSS_LINK,{'L','I','N','K','\0'}},
798     {TTP_STANDARDTITLE,0,{'S','T','A','N','D','A','R','D','T','I','T','L','E','\0'}},
799     {TTP_STANDARDTITLE,TTSS_NORMAL,{'N','O','R','M','A','L','\0'}},
800     {TTP_STANDARDTITLE,TTSS_LINK,{'L','I','N','K','\0'}},
801     {TTP_BALLOON,0,{'B','A','L','L','O','O','N','\0'}},
802     {TTP_BALLOON,TTBS_NORMAL,{'N','O','R','M','A','L','\0'}},
803     {TTP_BALLOON,TTBS_LINK,{'L','I','N','K','\0'}},
804     {TTP_BALLOONTITLE,0,{'B','A','L','L','O','O','N','T','I','T','L','E','\0'}},
805     {TTP_BALLOONTITLE,TTBS_NORMAL,{'N','O','R','M','A','L','\0'}},
806     {TTP_BALLOONTITLE,TTBS_LINK,{'L','I','N','K','\0'}},
807     {TTP_CLOSE,0,{'C','L','O','S','E','\0'}},
808     {TTP_CLOSE,TTCS_NORMAL,{'N','O','R','M','A','L','\0'}},
809     {TTP_CLOSE,TTCS_HOT,{'H','O','T','\0'}},
810     {TTP_CLOSE,TTCS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
811     {0,0,{'\0'}}
812 };
813
814 static const MSSTYLES_CLASS_MAP classTrackbar[] = {
815     {TKP_TRACK,0,{'T','R','A','C','K','\0'}},
816     {TKP_TRACK,TRS_NORMAL,{'N','O','R','M','A','L','\0'}},
817     {TKP_TRACKVERT,0,{'T','R','A','C','K','V','E','R','T','\0'}},
818     {TKP_TRACKVERT,TRVS_NORMAL,{'N','O','R','M','A','L','\0'}},
819     {TKP_THUMB,0,{'T','H','U','M','B','\0'}},
820     {TKP_THUMB,TUS_NORMAL,{'N','O','R','M','A','L','\0'}},
821     {TKP_THUMB,TUS_HOT,{'H','O','T','\0'}},
822     {TKP_THUMB,TUS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
823     {TKP_THUMB,TUS_FOCUSED,{'F','O','C','U','S','E','D','\0'}},
824     {TKP_THUMB,TUS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
825     {TKP_THUMBBOTTOM,0,{'T','H','U','M','B','B','O','T','T','O','M','\0'}},
826     {TKP_THUMBBOTTOM,TUBS_NORMAL,{'N','O','R','M','A','L','\0'}},
827     {TKP_THUMBBOTTOM,TUBS_HOT,{'H','O','T','\0'}},
828     {TKP_THUMBBOTTOM,TUBS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
829     {TKP_THUMBBOTTOM,TUBS_FOCUSED,{'F','O','C','U','S','E','D','\0'}},
830     {TKP_THUMBBOTTOM,TUBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
831     {TKP_THUMBTOP,0,{'T','H','U','M','B','T','O','P','\0'}},
832     {TKP_THUMBTOP,TUTS_NORMAL,{'N','O','R','M','A','L','\0'}},
833     {TKP_THUMBTOP,TUTS_HOT,{'H','O','T','\0'}},
834     {TKP_THUMBTOP,TUTS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
835     {TKP_THUMBTOP,TUTS_FOCUSED,{'F','O','C','U','S','E','D','\0'}},
836     {TKP_THUMBTOP,TUTS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
837     {TKP_THUMBVERT,0,{'T','H','U','M','B','V','E','R','T','\0'}},
838     {TKP_THUMBVERT,TUVS_NORMAL,{'N','O','R','M','A','L','\0'}},
839     {TKP_THUMBVERT,TUVS_HOT,{'H','O','T','\0'}},
840     {TKP_THUMBVERT,TUVS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
841     {TKP_THUMBVERT,TUVS_FOCUSED,{'F','O','C','U','S','E','D','\0'}},
842     {TKP_THUMBVERT,TUVS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
843     {TKP_THUMBLEFT,0,{'T','H','U','M','B','L','E','F','T','\0'}},
844     {TKP_THUMBLEFT,TUVLS_NORMAL,{'N','O','R','M','A','L','\0'}},
845     {TKP_THUMBLEFT,TUVLS_HOT,{'H','O','T','\0'}},
846     {TKP_THUMBLEFT,TUVLS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
847     {TKP_THUMBLEFT,TUVLS_FOCUSED,{'F','O','C','U','S','E','D','\0'}},
848     {TKP_THUMBLEFT,TUVLS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
849     {TKP_THUMBRIGHT,0,{'T','H','U','M','B','R','I','G','H','T','\0'}},
850     {TKP_THUMBRIGHT,TUVRS_NORMAL,{'N','O','R','M','A','L','\0'}},
851     {TKP_THUMBRIGHT,TUVRS_HOT,{'H','O','T','\0'}},
852     {TKP_THUMBRIGHT,TUVRS_PRESSED,{'P','R','E','S','S','E','D','\0'}},
853     {TKP_THUMBRIGHT,TUVRS_FOCUSED,{'F','O','C','U','S','E','D','\0'}},
854     {TKP_THUMBRIGHT,TUVRS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
855     {TKP_TICS,0,{'T','I','C','S','\0'}},
856     {TKP_TICS,TSS_NORMAL,{'N','O','R','M','A','L','\0'}},
857     {TKP_TICSVERT,0,{'T','I','C','S','V','E','R','T','\0'}},
858     {TKP_TICSVERT,TSVS_NORMAL,{'N','O','R','M','A','L','\0'}},
859     {0,0,{'\0'}}
860 };
861
862 static const MSSTYLES_CLASS_MAP classTraynotify[] = {
863     {TNP_BACKGROUND,0,{'B','A','C','K','G','R','O','U','N','D','\0'}},
864     {TNP_ANIMBACKGROUND,0,{'A','N','I','M','B','A','C','K','G','R','O','U','N','D','\0'}},
865     {0,0,{'\0'}}
866 };
867
868 static const MSSTYLES_CLASS_MAP classTreeview[] = {
869     {TVP_TREEITEM,0,{'T','R','E','E','I','T','E','M','\0'}},
870     {TVP_TREEITEM,TREIS_NORMAL,{'N','O','R','M','A','L','\0'}},
871     {TVP_TREEITEM,TREIS_HOT,{'H','O','T','\0'}},
872     {TVP_TREEITEM,TREIS_SELECTED,{'S','E','L','E','C','T','E','D','\0'}},
873     {TVP_TREEITEM,TREIS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
874     {TVP_TREEITEM,TREIS_SELECTEDNOTFOCUS,{'S','E','L','E','C','T','E','D','N','O','T','F','O','C','U','S','\0'}},
875     {TVP_GLYPH,0,{'G','L','Y','P','H','\0'}},
876     {TVP_GLYPH,GLPS_CLOSED,{'C','L','O','S','E','D','\0'}},
877     {TVP_GLYPH,GLPS_OPENED,{'O','P','E','N','E','D','\0'}},
878     {TVP_BRANCH,0,{'B','R','A','N','C','H','\0'}},
879     {0,0,{'\0'}}
880 };
881
882 static const MSSTYLES_CLASS_MAP classWindow[] = {
883     {WP_CAPTION,0,{'C','A','P','T','I','O','N','\0'}},
884     {WP_CAPTION,CS_ACTIVE,{'A','C','T','I','V','E','\0'}},
885     {WP_CAPTION,CS_INACTIVE,{'I','N','A','C','T','I','V','E','\0'}},
886     {WP_CAPTION,CS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
887     {WP_SMALLCAPTION,0,{'S','M','A','L','L','C','A','P','T','I','O','N','\0'}},
888     {WP_SMALLCAPTION,CS_ACTIVE,{'A','C','T','I','V','E','\0'}},
889     {WP_SMALLCAPTION,CS_INACTIVE,{'I','N','A','C','T','I','V','E','\0'}},
890     {WP_SMALLCAPTION,CS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
891     {WP_MINCAPTION,0,{'M','I','N','C','A','P','T','I','O','N','\0'}},
892     {WP_MINCAPTION,MNCS_ACTIVE,{'A','C','T','I','V','E','\0'}},
893     {WP_MINCAPTION,MNCS_INACTIVE,{'I','N','A','C','T','I','V','E','\0'}},
894     {WP_MINCAPTION,MNCS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
895     {WP_SMALLMINCAPTION,0,{'S','M','A','L','L','M','I','N','C','A','P','T','I','O','N','\0'}},
896     {WP_SMALLMINCAPTION,MNCS_ACTIVE,{'A','C','T','I','V','E','\0'}},
897     {WP_SMALLMINCAPTION,MNCS_INACTIVE,{'I','N','A','C','T','I','V','E','\0'}},
898     {WP_SMALLMINCAPTION,MNCS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
899     {WP_MAXCAPTION,0,{'M','A','X','C','A','P','T','I','O','N','\0'}},
900     {WP_MAXCAPTION,MXCS_ACTIVE,{'A','C','T','I','V','E','\0'}},
901     {WP_MAXCAPTION,MXCS_INACTIVE,{'I','N','A','C','T','I','V','E','\0'}},
902     {WP_MAXCAPTION,MXCS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
903     {WP_SMALLMAXCAPTION,0,{'S','M','A','L','L','M','A','X','C','A','P','T','I','O','N','\0'}},
904     {WP_SMALLMAXCAPTION,MXCS_ACTIVE,{'A','C','T','I','V','E','\0'}},
905     {WP_SMALLMAXCAPTION,MXCS_INACTIVE,{'I','N','A','C','T','I','V','E','\0'}},
906     {WP_SMALLMAXCAPTION,MXCS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
907     {WP_FRAMELEFT,0,{'F','R','A','M','E','L','E','F','T','\0'}},
908     {WP_FRAMELEFT,FS_ACTIVE,{'A','C','T','I','V','E','\0'}},
909     {WP_FRAMELEFT,FS_INACTIVE,{'I','N','A','C','T','I','V','E','\0'}},
910     {WP_FRAMERIGHT,0,{'F','R','A','M','E','R','I','G','H','T','\0'}},
911     {WP_FRAMERIGHT,FS_ACTIVE,{'A','C','T','I','V','E','\0'}},
912     {WP_FRAMERIGHT,FS_INACTIVE,{'I','N','A','C','T','I','V','E','\0'}},
913     {WP_FRAMEBOTTOM,0,{'F','R','A','M','E','B','O','T','T','O','M','\0'}},
914     {WP_FRAMEBOTTOM,FS_ACTIVE,{'A','C','T','I','V','E','\0'}},
915     {WP_FRAMEBOTTOM,FS_INACTIVE,{'I','N','A','C','T','I','V','E','\0'}},
916     {WP_SMALLFRAMELEFT,0,{'S','M','A','L','L','F','R','A','M','E','L','E','F','T','\0'}},
917     {WP_SMALLFRAMELEFT,FS_ACTIVE,{'A','C','T','I','V','E','\0'}},
918     {WP_SMALLFRAMELEFT,FS_INACTIVE,{'I','N','A','C','T','I','V','E','\0'}},
919     {WP_SMALLFRAMERIGHT,0,{'S','M','A','L','L','F','R','A','M','E','R','I','G','H','T','\0'}},
920     {WP_SMALLFRAMERIGHT,FS_ACTIVE,{'A','C','T','I','V','E','\0'}},
921     {WP_SMALLFRAMERIGHT,FS_INACTIVE,{'I','N','A','C','T','I','V','E','\0'}},
922     {WP_SMALLFRAMEBOTTOM,0,{'S','M','A','L','L','F','R','A','M','E','B','O','T','T','O','M','\0'}},
923     {WP_SMALLFRAMEBOTTOM,FS_ACTIVE,{'A','C','T','I','V','E','\0'}},
924     {WP_SMALLFRAMEBOTTOM,FS_INACTIVE,{'I','N','A','C','T','I','V','E','\0'}},
925     {WP_SYSBUTTON,0,{'S','Y','S','B','U','T','T','O','N','\0'}},
926     {WP_SYSBUTTON,SBS_NORMAL,{'N','O','R','M','A','L','\0'}},
927     {WP_SYSBUTTON,SBS_HOT,{'H','O','T','\0'}},
928     {WP_SYSBUTTON,SBS_PUSHED,{'P','U','S','H','E','D','\0'}},
929     {WP_SYSBUTTON,SBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
930     {WP_MDISYSBUTTON,0,{'M','D','I','S','Y','S','B','U','T','T','O','N','\0'}},
931     {WP_MDISYSBUTTON,SBS_NORMAL,{'N','O','R','M','A','L','\0'}},
932     {WP_MDISYSBUTTON,SBS_HOT,{'H','O','T','\0'}},
933     {WP_MDISYSBUTTON,SBS_PUSHED,{'P','U','S','H','E','D','\0'}},
934     {WP_MDISYSBUTTON,SBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
935     {WP_MINBUTTON,0,{'M','I','N','B','U','T','T','O','N','\0'}},
936     {WP_MINBUTTON,MINBS_NORMAL,{'N','O','R','M','A','L','\0'}},
937     {WP_MINBUTTON,MINBS_HOT,{'H','O','T','\0'}},
938     {WP_MINBUTTON,MINBS_PUSHED,{'P','U','S','H','E','D','\0'}},
939     {WP_MINBUTTON,MINBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
940     {WP_MDIMINBUTTON,0,{'M','D','I','M','I','N','B','U','T','T','O','N','\0'}},
941     {WP_MDIMINBUTTON,MINBS_NORMAL,{'N','O','R','M','A','L','\0'}},
942     {WP_MDIMINBUTTON,MINBS_HOT,{'H','O','T','\0'}},
943     {WP_MDIMINBUTTON,MINBS_PUSHED,{'P','U','S','H','E','D','\0'}},
944     {WP_MDIMINBUTTON,MINBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
945     {WP_MAXBUTTON,0,{'M','A','X','B','U','T','T','O','N','\0'}},
946     {WP_MAXBUTTON,MAXBS_NORMAL,{'N','O','R','M','A','L','\0'}},
947     {WP_MAXBUTTON,MAXBS_HOT,{'H','O','T','\0'}},
948     {WP_MAXBUTTON,MAXBS_PUSHED,{'P','U','S','H','E','D','\0'}},
949     {WP_MAXBUTTON,MAXBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
950     {WP_CLOSEBUTTON,0,{'C','L','O','S','E','B','U','T','T','O','N','\0'}},
951     {WP_CLOSEBUTTON,CBS_NORMAL,{'N','O','R','M','A','L','\0'}},
952     {WP_CLOSEBUTTON,CBS_HOT,{'H','O','T','\0'}},
953     {WP_CLOSEBUTTON,CBS_PUSHED,{'P','U','S','H','E','D','\0'}},
954     {WP_CLOSEBUTTON,CBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
955     {WP_SMALLCLOSEBUTTON,0,{'S','M','A','L','L','C','L','O','S','E','B','U','T','T','O','N','\0'}},
956     {WP_SMALLCLOSEBUTTON,CBS_NORMAL,{'N','O','R','M','A','L','\0'}},
957     {WP_SMALLCLOSEBUTTON,CBS_HOT,{'H','O','T','\0'}},
958     {WP_SMALLCLOSEBUTTON,CBS_PUSHED,{'P','U','S','H','E','D','\0'}},
959     {WP_SMALLCLOSEBUTTON,CBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
960     {WP_MDICLOSEBUTTON,0,{'M','D','I','C','L','O','S','E','B','U','T','T','O','N','\0'}},
961     {WP_MDICLOSEBUTTON,CBS_NORMAL,{'N','O','R','M','A','L','\0'}},
962     {WP_MDICLOSEBUTTON,CBS_HOT,{'H','O','T','\0'}},
963     {WP_MDICLOSEBUTTON,CBS_PUSHED,{'P','U','S','H','E','D','\0'}},
964     {WP_MDICLOSEBUTTON,CBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
965     {WP_RESTOREBUTTON,0,{'R','E','S','T','O','R','E','B','U','T','T','O','N','\0'}},
966     {WP_RESTOREBUTTON,RBS_NORMAL,{'N','O','R','M','A','L','\0'}},
967     {WP_RESTOREBUTTON,RBS_HOT,{'H','O','T','\0'}},
968     {WP_RESTOREBUTTON,RBS_PUSHED,{'P','U','S','H','E','D','\0'}},
969     {WP_RESTOREBUTTON,RBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
970     {WP_MDIRESTOREBUTTON,0,{'M','D','I','R','E','S','T','O','R','E','B','U','T','T','O','N','\0'}},
971     {WP_MDIRESTOREBUTTON,RBS_NORMAL,{'N','O','R','M','A','L','\0'}},
972     {WP_MDIRESTOREBUTTON,RBS_HOT,{'H','O','T','\0'}},
973     {WP_MDIRESTOREBUTTON,RBS_PUSHED,{'P','U','S','H','E','D','\0'}},
974     {WP_MDIRESTOREBUTTON,RBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
975     {WP_HELPBUTTON,0,{'H','E','L','P','B','U','T','T','O','N','\0'}},
976     {WP_HELPBUTTON,HBS_NORMAL,{'N','O','R','M','A','L','\0'}},
977     {WP_HELPBUTTON,HBS_HOT,{'H','O','T','\0'}},
978     {WP_HELPBUTTON,HBS_PUSHED,{'P','U','S','H','E','D','\0'}},
979     {WP_HELPBUTTON,HBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
980     {WP_MDIHELPBUTTON,0,{'M','D','I','H','E','L','P','B','U','T','T','O','N','\0'}},
981     {WP_MDIHELPBUTTON,HBS_NORMAL,{'N','O','R','M','A','L','\0'}},
982     {WP_MDIHELPBUTTON,HBS_HOT,{'H','O','T','\0'}},
983     {WP_MDIHELPBUTTON,HBS_PUSHED,{'P','U','S','H','E','D','\0'}},
984     {WP_MDIHELPBUTTON,HBS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
985     {WP_HORZSCROLL,0,{'H','O','R','Z','S','C','R','O','L','L','\0'}},
986     {WP_HORZSCROLL,HSS_NORMAL,{'N','O','R','M','A','L','\0'}},
987     {WP_HORZSCROLL,HSS_HOT,{'H','O','T','\0'}},
988     {WP_HORZSCROLL,HSS_PUSHED,{'P','U','S','H','E','D','\0'}},
989     {WP_HORZSCROLL,HSS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
990     {WP_HORZTHUMB,0,{'H','O','R','Z','T','H','U','M','B','\0'}},
991     {WP_HORZTHUMB,HTS_NORMAL,{'N','O','R','M','A','L','\0'}},
992     {WP_HORZTHUMB,HTS_HOT,{'H','O','T','\0'}},
993     {WP_HORZTHUMB,HTS_PUSHED,{'P','U','S','H','E','D','\0'}},
994     {WP_HORZTHUMB,HTS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
995     {WP_VERTSCROLL,0,{'V','E','R','T','S','C','R','O','L','L','\0'}},
996     {WP_VERTSCROLL,VSS_NORMAL,{'N','O','R','M','A','L','\0'}},
997     {WP_VERTSCROLL,VSS_HOT,{'H','O','T','\0'}},
998     {WP_VERTSCROLL,VSS_PUSHED,{'P','U','S','H','E','D','\0'}},
999     {WP_VERTSCROLL,VSS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
1000     {WP_VERTTHUMB,0,{'V','E','R','T','T','H','U','M','B','\0'}},
1001     {WP_VERTTHUMB,VTS_NORMAL,{'N','O','R','M','A','L','\0'}},
1002     {WP_VERTTHUMB,VTS_HOT,{'H','O','T','\0'}},
1003     {WP_VERTTHUMB,VTS_PUSHED,{'P','U','S','H','E','D','\0'}},
1004     {WP_VERTTHUMB,VTS_DISABLED,{'D','I','S','A','B','L','E','D','\0'}},
1005     {WP_DIALOG,0,{'D','I','A','L','O','G','\0'}},
1006     {WP_CAPTIONSIZINGTEMPLATE,0,{'C','A','P','T','I','O','N','S','I','Z','I','N','G','T','E','M','P','L','A','T','E','\0'}},
1007     {WP_SMALLCAPTIONSIZINGTEMPLATE,0,{'S','M','A','L','L','C','A','P','T','I','O','N','S','I','Z','I','N','G','T','E','M','P','L','A','T','E','\0'}},
1008     {WP_FRAMELEFTSIZINGTEMPLATE,0,{'F','R','A','M','E','L','E','F','T','S','I','Z','I','N','G','T','E','M','P','L','A','T','E','\0'}},
1009     {WP_SMALLFRAMELEFTSIZINGTEMPLATE,0,{'S','M','A','L','L','F','R','A','M','E','L','E','F','T','S','I','Z','I','N','G','T','E','M','P','L','A','T','E','\0'}},
1010     {WP_FRAMERIGHTSIZINGTEMPLATE,0,{'F','R','A','M','E','R','I','G','H','T','S','I','Z','I','N','G','T','E','M','P','L','A','T','E','\0'}},
1011     {WP_SMALLFRAMERIGHTSIZINGTEMPLATE,0,{'S','M','A','L','L','F','R','A','M','E','R','I','G','H','T','S','I','Z','I','N','G','T','E','M','P','L','A','T','E','\0'}},
1012     {WP_FRAMEBOTTOMSIZINGTEMPLATE,0,{'F','R','A','M','E','B','O','T','T','O','M','S','I','Z','I','N','G','T','E','M','P','L','A','T','E','\0'}},
1013     {WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE,0,{'S','M','A','L','L','F','R','A','M','E','B','O','T','T','O','M','S','I','Z','I','N','G','T','E','M','P','L','A','T','E','\0'}},
1014     {0,0,{'\0'}}
1015 };
1016
1017 /* Map class names to part/state maps */
1018 static const MSSTYLES_CLASS_NAME mapClass[] = {
1019     {classGlobals, {'G','L','O','B','A','L','S','\0'}},
1020     {classButton, {'B','U','T','T','O','N','\0'}},
1021     {classClock, {'C','L','O','C','K','\0'}},
1022     {classCombobox, {'C','O','M','B','O','B','O','X','\0'}},
1023     {classEdit, {'E','D','I','T','\0'}},
1024     {classExplorerbar, {'E','X','P','L','O','R','E','R','B','A','R','\0'}},
1025     {classHeader, {'H','E','A','D','E','R','\0'}},
1026     {classListview, {'L','I','S','T','V','I','E','W','\0'}},
1027     {classMenu, {'M','E','N','U','\0'}},
1028     {classMenuband, {'M','E','N','U','B','A','N','D','\0'}},
1029     {classPage, {'P','A','G','E','\0'}},
1030     {classProgress, {'P','R','O','G','R','E','S','S','\0'}},
1031     {classRebar, {'R','E','B','A','R','\0'}},
1032     {classScrollbar, {'S','C','R','O','L','L','B','A','R','\0'}},
1033     {classSpin, {'S','P','I','N','\0'}},
1034     {classStartpanel, {'S','T','A','R','T','P','A','N','E','L','\0'}},
1035     {classStatus, {'S','T','A','T','U','S','\0'}},
1036     {classTab, {'T','A','B','\0'}},
1037     {classTaskband, {'T','A','S','K','B','A','N','D','\0'}},
1038     {classTaskbar, {'T','A','S','K','B','A','R','\0'}},
1039     {classToolbar, {'T','O','O','L','B','A','R','\0'}},
1040     {classTooltip, {'T','O','O','L','T','I','P','\0'}},
1041     {classTrackbar, {'T','R','A','C','K','B','A','R','\0'}},
1042     {classTraynotify, {'T','R','A','Y','N','O','T','I','F','Y','\0'}},
1043     {classTreeview, {'T','R','E','E','V','I','E','W','\0'}},
1044     {classWindow, {'W','I','N','D','O','W','\0'}}
1045 };
1046
1047 BOOL MSSTYLES_LookupPartState(LPCWSTR pszClass, LPCWSTR pszPart, LPCWSTR pszState, int *iPartId, int *iStateId)
1048 {
1049     unsigned int i;
1050     const MSSTYLES_CLASS_MAP *map;
1051
1052     *iPartId = 0;
1053     *iStateId = 0;
1054     for(i=0; i<sizeof(mapClass)/sizeof(mapClass[0]); i++) {
1055         if(!lstrcmpiW(mapClass[i].pszClass, pszClass)) {
1056             map = mapClass[i].lpMap;
1057             if(pszPart) {
1058                 do {
1059                     if(map->dwStateID == 0 && !lstrcmpiW(map->szName, pszPart)) {
1060                         *iPartId = map->dwPartID;
1061                         break;
1062                     }
1063                 } while(*((++map)->szName));
1064             }
1065             if(pszState) {
1066                 if(pszPart && *iPartId == 0) {
1067                     break;
1068                 }
1069                 do {
1070                     if(pszPart) {
1071                         if(map->dwPartID == *iPartId && !lstrcmpiW(map->szName, pszState)) {
1072                             *iStateId = map->dwStateID;
1073                             break;
1074                         }
1075                     }
1076                     else {
1077                         if(!lstrcmpiW(map->szName, pszState)) {
1078                             *iStateId = map->dwStateID;
1079                             break;
1080                         }
1081                     }
1082                 } while(*((++map)->szName));
1083             }
1084             break;
1085         }
1086     }
1087     if(pszPart && *iPartId == 0) {
1088         return FALSE;
1089     }
1090     if(pszState && *iStateId == 0) {
1091         return FALSE;
1092     }
1093     return TRUE;
1094 }
1095
1096 /**********************************************************************
1097  *      MSSTYLES_LookupProperty
1098  *
1099  * Find a property ID from name
1100  *
1101  * PARAMS
1102  *     pszPropertyName     Name of property to lookup
1103  *     dwPrimitive         Location to store primitive type of property
1104  *     dwId                Location to store ID of property
1105  *
1106  * RETURNS
1107  *     FALSE if value is not found, TRUE otherwise
1108  */
1109 BOOL MSSTYLES_LookupProperty(LPCWSTR pszPropertyName, int *dwPrimitive, int *dwId)
1110 {
1111     DWORD item = 0;
1112     do {
1113         if(!lstrcmpiW(mapProperty[item].szPropertyName, pszPropertyName)) {
1114             if(dwPrimitive) *dwPrimitive = mapProperty[item].dwPrimitiveType;
1115             if(dwId) *dwId = mapProperty[item].dwPropertyID;
1116             return TRUE;
1117         }
1118     } while(*mapProperty[++item].szPropertyName);
1119     return FALSE;
1120 }
1121
1122 /**********************************************************************
1123  *      MSSTYLES_LookupEnum
1124  *
1125  * Lookup the value for an enumeration
1126  *
1127  * PARAMS
1128  *     pszValueName        Value name to lookup
1129  *     dwEnum              Enumeration property ID to search
1130  *     dwValue             Location to store value
1131  *
1132  * RETURNS
1133  *     FALSE if value is not found, TRUE otherwise
1134  */
1135 BOOL MSSTYLES_LookupEnum(LPCWSTR pszValueName, int dwEnum, int *dwValue)
1136 {
1137     DWORD item = 0;
1138     /* Locate the enum block */
1139     while(*mapEnum[item].szValueName && mapEnum[item].dwEnum != dwEnum) item++;
1140     /* Now find the value in that block */
1141     while(*mapEnum[item].szValueName && mapEnum[item].dwEnum == dwEnum) {
1142         if(!lstrcmpiW(mapEnum[item].szValueName, pszValueName)) {
1143             if(dwValue) *dwValue = mapEnum[item].dwValue;
1144             return TRUE;
1145         }
1146         item++;
1147     }
1148     return FALSE;
1149 }