Use enumerations in tmschema.h

Francois Gouget fgouget at free.fr
Fri Sep 3 17:43:22 CDT 2004


Out current tmschema.h file uses a bunch of '#define' statements to
define all the constants. But these are infact supposed to be
enumerations. I guess Winelib applications (and the Wine code) may
expect to be able to / want to use all these types. So this patch
convertys our file to define enums like the Microsoft headers do.

I used the following sed command to perform the initial transformation:

sed -e 's/#define TMT_\([A-Z][A-Z]*\) *\([0-9][0-9]*\)/    TMT_PROP(\2, TMT, \1)/' \
    -e '1,128 s/#define \([A-Z][A-Z]*\)_\([A-Z][A-Z0-9]*\)  *\([0-9][0-9]*\)/    TM_ENUM(\3, \1, \2)/' \
    -e '368,$ s/#define \([A-Z][A-Z]*P\)_\([A-Z][A-Z]*\)  *\([0-9][0-9]*\)/    TM_PART(\3, \1, \2)/' \
    -e '368,$ s/#define \([A-Z][A-Z]*S\)_\([A-Z][A-Z]*\)  *\([0-9][0-9]*\)/    TM_STATE(\3, \1, \2)/' \
    include/tmschema.h >include/tmschema2.h

Then I added the BEGIN/END statements, added the type to the TM_PROP
declarations, and fixed up a couple of issues.


Changelog:

 * include/schemadef.h
   include/tmschema.h

   Define the tmschema.h constants using enumerations and the macros
provided by schemadef.h.


-- 
Francois Gouget         fgouget at free.fr        http://fgouget.free.fr/
               Dieu dit: "M-x Lumi\xE8re". Et la lumi\xE8re fut.
-------------- next part --------------
--- /dev/null	2004-08-10 11:44:31.000000000 +0200
+++ include/schemadef.h	2004-09-03 14:53:41.000000000 +0200
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2003 Kevin Koltzau
+ * Copyright (C) 2004 Francois Gouget
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __WINE_SCHEMADEF_H
+#define __WINE_SCHEMADEF_H
+
+#define BEGIN_TM_SCHEMA(name)
+#define END_TM_SCHEMA(name)
+
+#define BEGIN_TM_ENUM(name)                enum name {
+#define TM_ENUM(value, prefix, name)           prefix##_##name = (value),
+#define END_TM_ENUM()                      };
+
+#define BEGIN_TM_PROPS()                   enum PropValues { \
+                                               DummyProp = 49,
+#define TM_PROP(value, prefix, name, type)     prefix##_##name = (value),
+#define END_TM_PROPS()                     };
+
+#define BEGIN_TM_CLASS_PARTS(name)         enum name##PARTS { \
+                                               name##PartFiller0,
+#define TM_PART(value, prefix, name)           prefix##_##name = (value),
+#define END_TM_CLASS_PARTS()               };
+
+#define BEGIN_TM_PART_STATES(name)         enum name##STATES { \
+                                               name##StateFiller0,
+#define TM_STATE(value, prefix, name)          prefix##_##name = (value),
+#define END_TM_PART_STATES()               };
+
+#endif
Index: include/tmschema.h
===================================================================
RCS file: /var/cvs/wine/include/tmschema.h,v
retrieving revision 1.4
diff -u -r1.4 tmschema.h
--- include/tmschema.h	3 Sep 2004 17:29:15 -0000	1.4
+++ include/tmschema.h	3 Sep 2004 19:24:13 -0000
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2003 Kevin Koltzau
+ * Copyright (C) 2004 Francois Gouget
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -19,1013 +20,1251 @@
 #ifndef __WINE_TMSCHEMA_H
 #define __WINE_TMSCHEMA_H
 
+#include <schemadef.h>
 
-/* Primitive types */
-#define TMT_STRING   201
-#define TMT_INT      202
-#define TMT_BOOL     203
-#define TMT_COLOR    204
-#define TMT_MARGINS  205
-#define TMT_FILENAME 206
-#define TMT_SIZE     207
-#define TMT_POSITION 208
-#define TMT_RECT     209
-#define TMT_FONT     210
-#define TMT_INTLIST  211
+BEGIN_TM_SCHEMA(ThemeMgrSchema)
 
 
-/* Enumerations */
+/***** ENUMERATIONS *****/
 
 /* BGTYPE Enum */
-#define BT_IMAGEFILE  0
-#define BT_BORDERFILL 1
-#define BT_NONE       2
+BEGIN_TM_ENUM(BGTYPE)
+    TM_ENUM(0, BT, IMAGEFILE)
+    TM_ENUM(1, BT, BORDERFILL)
+    TM_ENUM(2, BT, NONE)
+END_TM_ENUM()
 
 /* IMAGELAYOUT Enum */
-#define IL_VERTICAL   0
-#define IL_HORIZONTAL 1
+BEGIN_TM_ENUM(IMAGELAYOUT)
+    TM_ENUM(0, IL, VERTICAL)
+    TM_ENUM(1, IL, HORIZONTAL)
+END_TM_ENUM()
 
 /* BORDERTYPE Enum */
-#define BT_RECT      0
-#define BT_ROUNDRECT 1
-#define BT_ELLIPSE   2
+BEGIN_TM_ENUM(BORDERTYPE)
+    TM_ENUM(0, BT, RECT)
+    TM_ENUM(1, BT, ROUNDRECT)
+    TM_ENUM(2, BT, ELLIPSE)
+END_TM_ENUM()
 
 /* FILLTYPE Enum */
-#define FT_SOLID          0
-#define FT_VERTGRADIENT   1
-#define FT_HORZGRADIENT   2
-#define FT_RADIALGRADIENT 3
-#define FT_TILEIMAGE      4
+BEGIN_TM_ENUM(FILLTYPE)
+    TM_ENUM(0, FT, SOLID)
+    TM_ENUM(1, FT, VERTGRADIENT)
+    TM_ENUM(2, FT, HORZGRADIENT)
+    TM_ENUM(3, FT, RADIALGRADIENT)
+    TM_ENUM(4, FT, TILEIMAGE)
+END_TM_ENUM()
 
 /* SIZINGTYPE Enum */
-#define ST_TRUESIZE 0
-#define ST_STRETCH  1
-#define ST_TILE     2
+BEGIN_TM_ENUM(SIZINGTYPE)
+    TM_ENUM(0, ST, TRUESIZE)
+    TM_ENUM(1, ST, STRETCH)
+    TM_ENUM(2, ST, TILE)
+END_TM_ENUM()
 
 /* HALIGN Enum */
-#define HA_LEFT   0
-#define HA_CENTER 1
-#define HA_RIGHT  2
+BEGIN_TM_ENUM(HALIGN)
+    TM_ENUM(0, HA, LEFT)
+    TM_ENUM(1, HA, CENTER)
+    TM_ENUM(2, HA, RIGHT)
+END_TM_ENUM()
 
 /* CONTENTALIGNMENT Enum */
-#define CA_LEFT   0
-#define CA_CENTER 1
-#define CA_RIGHT  2
+BEGIN_TM_ENUM(CONTENTALIGNMENT)
+    TM_ENUM(0, CA, LEFT)
+    TM_ENUM(1, CA, CENTER)
+    TM_ENUM(2, CA, RIGHT)
+END_TM_ENUM()
 
 /* VALIGN Enum */
-#define VA_TOP    0
-#define VA_CENTER 1
-#define VA_BOTTOM 2
+BEGIN_TM_ENUM(VALIGN)
+    TM_ENUM(0, VA, TOP)
+    TM_ENUM(1, VA, CENTER)
+    TM_ENUM(2, VA, BOTTOM)
+END_TM_ENUM()
 
 /* OFFSETTYPE Enum */
-#define OT_TOPLEFT           0
-#define OT_TOPRIGHT          1
-#define OT_TOPMIDDLE         2
-#define OT_BOTTOMLEFT        3
-#define OT_BOTTOMRIGHT       4
-#define OT_BOTTOMMIDDLE      5
-#define OT_MIDDLELEFT        6
-#define OT_MIDDLERIGHT       7
-#define OT_LEFTOFCAPTION     8
-#define OT_RIGHTOFCAPTION    9
-#define OT_LEFTOFLASTBUTTON  10
-#define OT_RIGHTOFLASTBUTTON 11
-#define OT_ABOVELASTBUTTON   12
-#define OT_BELOWLASTBUTTON   13
+BEGIN_TM_ENUM(OFFSETTYPE)
+    TM_ENUM(0, OT, TOPLEFT)
+    TM_ENUM(1, OT, TOPRIGHT)
+    TM_ENUM(2, OT, TOPMIDDLE)
+    TM_ENUM(3, OT, BOTTOMLEFT)
+    TM_ENUM(4, OT, BOTTOMRIGHT)
+    TM_ENUM(5, OT, BOTTOMMIDDLE)
+    TM_ENUM(6, OT, MIDDLELEFT)
+    TM_ENUM(7, OT, MIDDLERIGHT)
+    TM_ENUM(8, OT, LEFTOFCAPTION)
+    TM_ENUM(9, OT, RIGHTOFCAPTION)
+    TM_ENUM(10, OT, LEFTOFLASTBUTTON)
+    TM_ENUM(11, OT, RIGHTOFLASTBUTTON)
+    TM_ENUM(12, OT, ABOVELASTBUTTON)
+    TM_ENUM(13, OT, BELOWLASTBUTTON)
+END_TM_ENUM()
 
 /* ICONEFFECT Enum */
-#define ICE_NONE   0
-#define ICE_GLOW   1
-#define ICE_SHADOW 2
-#define ICE_PULSE  3
-#define ICE_ALPHA  4
+BEGIN_TM_ENUM(ICONEFFECT)
+    TM_ENUM(0, ICE, NONE)
+    TM_ENUM(1, ICE, GLOW)
+    TM_ENUM(2, ICE, SHADOW)
+    TM_ENUM(3, ICE, PULSE)
+    TM_ENUM(4, ICE, ALPHA)
+END_TM_ENUM()
 
 /* TEXTSHADOWTYPE Enum */
-#define TST_NONE       0
-#define TST_SINGLE     1
-#define TST_CONTINUOUS 2
+BEGIN_TM_ENUM(TEXTSHADOWTYPE)
+    TM_ENUM(0, TST, NONE)
+    TM_ENUM(1, TST, SINGLE)
+    TM_ENUM(2, TST, CONTINUOUS)
+END_TM_ENUM()
 
 /* GLYPHTYPE Enum */
-#define GT_NONE       0
-#define GT_IMAGEGLYPH 1
-#define GT_FONTGLYPH  2
+BEGIN_TM_ENUM(GLYPHTYPE)
+    TM_ENUM(0, GT, NONE)
+    TM_ENUM(1, GT, IMAGEGLYPH)
+    TM_ENUM(2, GT, FONTGLYPH)
+END_TM_ENUM()
 
 /* IMAGESELECTTYPE Enum */
-#define IST_NONE 0
-#define IST_SIZE 1
-#define IST_DPI  2
+BEGIN_TM_ENUM(IMAGESELECTTYPE)
+    TM_ENUM(0, IST, NONE)
+    TM_ENUM(1, IST, SIZE)
+    TM_ENUM(2, IST, DPI)
+END_TM_ENUM()
 
 /* TRUESIZESCALINGTYPE Enum */
-#define TSST_NONE 0
-#define TSST_SIZE 1
-#define TSST_DPI  2
+BEGIN_TM_ENUM(TRUESIZESCALINGTYPE)
+    TM_ENUM(0, TSST, NONE)
+    TM_ENUM(1, TSST, SIZE)
+    TM_ENUM(2, TSST, DPI)
+END_TM_ENUM()
 
 /* GLYPHFONTSIZINGTYPE Enum */
-#define GFST_NONE 0
-#define GFST_SIZE 1
-#define GFST_DPI  2
-
-
-/* PROPERTIES */
-
-/* Misc properties */
-#define TMT_COLORSCHEMES 401
-#define TMT_SIZES        402
-#define TMT_CHARSET      403
-
-/* Documentation properties */
-#define TMT_DISPLAYNAME 601
-#define TMT_TOOLTIP     602
-#define TMT_COMPANY     603
-#define TMT_AUTHOR      604
-#define TMT_COPYRIGHT   605
-#define TMT_URL         606
-#define TMT_VERSION     607
-#define TMT_DESCRIPTION 608
-#define TMT_FIRST_RCSTRING_NAME   TMT_DISPLAYNAME
-#define TMT_LAST_RCSTRING_NAME    TMT_DESCRIPTION
-
-/* Font theme metric properties */
-#define TMT_CAPTIONFONT      801
-#define TMT_SMALLCAPTIONFONT 802
-#define TMT_MENUFONT         803
-#define TMT_STATUSFONT       804
-#define TMT_MSGBOXFONT       805
-#define TMT_ICONTITLEFONT    806
-#define TMT_FIRSTFONT TMT_CAPTIONFONT
-#define TMT_LASTFONT  TMT_ICONTITLEFONT
-
-/* Bool theme metric properties */
-#define TMT_FLATMENUS 1001
-#define TMT_FIRSTBOOL   TMT_FLATMENUS
-#define TMT_LASTBOOL    TMT_FLATMENUS
-
-/* Size theme metric properties */
-#define TMT_SIZINGBORDERWIDTH  1201
-#define TMT_SCROLLBARWIDTH     1202
-#define TMT_SCROLLBARHEIGHT    1203
-#define TMT_CAPTIONBARWIDTH    1204
-#define TMT_CAPTIONBARHEIGHT   1205
-#define TMT_SMCAPTIONBARWIDTH  1206
-#define TMT_SMCAPTIONBARHEIGHT 1207
-#define TMT_MENUBARWIDTH       1208
-#define TMT_MENUBARHEIGHT      1209
-#define TMT_FIRSTSIZE   TMT_SIZINGBORDERWIDTH
-#define TMT_LASTSIZE    TMT_MENUBARHEIGHT
-
-/* Int theme metric properties */
-#define TMT_MINCOLORDEPTH 1301
-#define TMT_FIRSTINT   TMT_MINCOLORDEPTH
-#define TMT_LASTINT    TMT_MINCOLORDEPTH
-
-/* String theme metric properties */
-#define TMT_CSSNAME 1401
-#define TMT_XMLNAME 1402
-#define TMT_FIRSTSTRING   TMT_CSSNAME
-#define TMT_LASTSTRING    TMT_XMLNAME
-
-/* Color theme metric properties */
-#define TMT_SCROLLBAR               1601
-#define TMT_BACKGROUND              1602
-#define TMT_ACTIVECAPTION           1603
-#define TMT_INACTIVECAPTION         1604
-#define TMT_MENU                    1605
-#define TMT_WINDOW                  1606
-#define TMT_WINDOWFRAME             1607
-#define TMT_MENUTEXT                1608
-#define TMT_WINDOWTEXT              1609
-#define TMT_CAPTIONTEXT             1610
-#define TMT_ACTIVEBORDER            1611
-#define TMT_INACTIVEBORDER          1612
-#define TMT_APPWORKSPACE            1613
-#define TMT_HIGHLIGHT               1614
-#define TMT_HIGHLIGHTTEXT           1615
-#define TMT_BTNFACE                 1616
-#define TMT_BTNSHADOW               1617
-#define TMT_GRAYTEXT                1618
-#define TMT_BTNTEXT                 1619
-#define TMT_INACTIVECAPTIONTEXT     1620
-#define TMT_BTNHIGHLIGHT            1621
-#define TMT_DKSHADOW3D              1622
-#define TMT_LIGHT3D                 1623
-#define TMT_INFOTEXT                1624
-#define TMT_INFOBK                  1625
-#define TMT_BUTTONALTERNATEFACE     1626
-#define TMT_HOTTRACKING             1627
-#define TMT_GRADIENTACTIVECAPTION   1628
-#define TMT_GRADIENTINACTIVECAPTION 1629
-#define TMT_MENUHILIGHT             1630
-#define TMT_MENUBAR                 1631
-#define TMT_FIRSTCOLOR  TMT_SCROLLBAR
-#define TMT_LASTCOLOR   TMT_MENUBAR
-
-
-/* hue substitutions */
-#define TMT_FROMHUE1 1801
-#define TMT_FROMHUE2 1802
-#define TMT_FROMHUE3 1803
-#define TMT_FROMHUE4 1804
-#define TMT_FROMHUE5 1805
-#define TMT_TOHUE1   1806
-#define TMT_TOHUE2   1807
-#define TMT_TOHUE3   1808
-#define TMT_TOHUE4   1809
-#define TMT_TOHUE5   1810
-
-/* color substitutions */
-#define TMT_FROMCOLOR1 2001
-#define TMT_FROMCOLOR2 2002
-#define TMT_FROMCOLOR3 2003
-#define TMT_FROMCOLOR4 2004
-#define TMT_FROMCOLOR5 2005
-#define TMT_TOCOLOR1   2006
-#define TMT_TOCOLOR2   2007
-#define TMT_TOCOLOR3   2008
-#define TMT_TOCOLOR4   2009
-#define TMT_TOCOLOR5   2010
-
-
-/* Bool rendering properties */
-#define TMT_TRANSPARENT         2201
-#define TMT_AUTOSIZE            2202
-#define TMT_BORDERONLY          2203
-#define TMT_COMPOSITED          2204
-#define TMT_BGFILL              2205
-#define TMT_GLYPHTRANSPARENT    2206
-#define TMT_GLYPHONLY           2207
-#define TMT_ALWAYSSHOWSIZINGBAR 2208
-#define TMT_MIRRORIMAGE         2209
-#define TMT_UNIFORMSIZING       2210
-#define TMT_INTEGRALSIZING      2211
-#define TMT_SOURCEGROW          2212
-#define TMT_SOURCESHRINK        2213
-
-/* Int rendering properties */
-#define TMT_IMAGECOUNT          2401
-#define TMT_ALPHALEVEL          2402
-#define TMT_BORDERSIZE          2403
-#define TMT_ROUNDCORNERWIDTH    2404
-#define TMT_ROUNDCORNERHEIGHT   2405
-#define TMT_GRADIENTRATIO1      2406
-#define TMT_GRADIENTRATIO2      2407
-#define TMT_GRADIENTRATIO3      2408
-#define TMT_GRADIENTRATIO4      2409
-#define TMT_GRADIENTRATIO5      2410
-#define TMT_PROGRESSCHUNKSIZE   2411
-#define TMT_PROGRESSSPACESIZE   2412
-#define TMT_SATURATION          2413
-#define TMT_TEXTBORDERSIZE      2414
-#define TMT_ALPHATHRESHOLD      2415
-#define TMT_WIDTH               2416
-#define TMT_HEIGHT              2417
-#define TMT_GLYPHINDEX          2418
-#define TMT_TRUESIZESTRETCHMARK 2419
-#define TMT_MINDPI1             2420
-#define TMT_MINDPI2             2421
-#define TMT_MINDPI3             2422
-#define TMT_MINDPI4             2423
-#define TMT_MINDPI5             2424
-
-/* Font rendering properties */
-#define TMT_GLYPHFONT 2601
-
-/* Filename rendering properties */
-#define TMT_IMAGEFILE       3001
-#define TMT_IMAGEFILE1      3002
-#define TMT_IMAGEFILE2      3003
-#define TMT_IMAGEFILE3      3004
-#define TMT_IMAGEFILE4      3005
-#define TMT_IMAGEFILE5      3006
-#define TMT_STOCKIMAGEFILE  3007
-#define TMT_GLYPHIMAGEFILE  3008
-
-/* String rendering properties */
-#define TMT_TEXT 3201
-
-/* Position rendering properties */
-#define TMT_OFFSET              3401
-#define TMT_TEXTSHADOWOFFSET    3402
-#define TMT_MINSIZE             3403
-#define TMT_MINSIZE1            3404
-#define TMT_MINSIZE2            3405
-#define TMT_MINSIZE3            3406
-#define TMT_MINSIZE4            3407
-#define TMT_MINSIZE5            3408
-#define TMT_NORMALSIZE          3409
-
-/* Margin rendering properties */
-#define TMT_SIZINGMARGINS   3601
-#define TMT_CONTENTMARGINS  3602
-#define TMT_CAPTIONMARGINS  3603
-
-/* Color rendering properties */
-#define TMT_BORDERCOLOR             3801
-#define TMT_FILLCOLOR               3802
-#define TMT_TEXTCOLOR               3803
-#define TMT_EDGELIGHTCOLOR          3804
-#define TMT_EDGEHIGHLIGHTCOLOR      3805
-#define TMT_EDGESHADOWCOLOR         3806
-#define TMT_EDGEDKSHADOWCOLOR       3807
-#define TMT_EDGEFILLCOLOR           3808
-#define TMT_TRANSPARENTCOLOR        3809
-#define TMT_GRADIENTCOLOR1          3810
-#define TMT_GRADIENTCOLOR2          3811
-#define TMT_GRADIENTCOLOR3          3812
-#define TMT_GRADIENTCOLOR4          3813
-#define TMT_GRADIENTCOLOR5          3814
-#define TMT_SHADOWCOLOR             3815
-#define TMT_GLOWCOLOR               3816
-#define TMT_TEXTBORDERCOLOR         3817
-#define TMT_TEXTSHADOWCOLOR         3818
-#define TMT_GLYPHTEXTCOLOR          3819
-#define TMT_GLYPHTRANSPARENTCOLOR   3820
-#define TMT_FILLCOLORHINT           3821
-#define TMT_BORDERCOLORHINT         3822
-#define TMT_ACCENTCOLORHINT         3823
-
-/* Enum rendering properties */
-#define TMT_BGTYPE              4001
-#define TMT_BORDERTYPE          4002
-#define TMT_FILLTYPE            4003
-#define TMT_SIZINGTYPE          4004
-#define TMT_HALIGN              4005
-#define TMT_CONTENTALIGNMENT    4006
-#define TMT_VALIGN              4007
-#define TMT_OFFSETTYPE          4008
-#define TMT_ICONEFFECT          4009
-#define TMT_TEXTSHADOWTYPE      4010
-#define TMT_IMAGELAYOUT         4011
-#define TMT_GLYPHTYPE           4012
-#define TMT_IMAGESELECTTYPE     4013
-#define TMT_GLYPHFONTSIZINGTYPE 4014
-#define TMT_TRUESIZESCALINGTYPE 4015
-
-/* custom properties */
-#define TMT_USERPICTURE     5001
-#define TMT_DEFAULTPANESIZE 5002
-#define TMT_BLENDCOLOR      5003
+BEGIN_TM_ENUM(GLYPHFONTSIZINGTYPE)
+    TM_ENUM(0, GFST, NONE)
+    TM_ENUM(1, GFST, SIZE)
+    TM_ENUM(2, GFST, DPI)
+END_TM_ENUM()
+
+
+/***** PROPERTIES *****/
+BEGIN_TM_PROPS()
+
+    /* Primitive types */
+    TM_PROP(201, TMT, STRING,                     STRING)
+    TM_PROP(202, TMT, INT,                        INT)
+    TM_PROP(203, TMT, BOOL,                       BOOL)
+    TM_PROP(204, TMT, COLOR,                      COLOR)
+    TM_PROP(205, TMT, MARGINS,                    MARGINS)
+    TM_PROP(206, TMT, FILENAME,                   FILENAME)
+    TM_PROP(207, TMT, SIZE,                       SIZE)
+    TM_PROP(208, TMT, POSITION,                   POSITION)
+    TM_PROP(209, TMT, RECT,                       RECT)
+    TM_PROP(210, TMT, FONT,                       FONT)
+    TM_PROP(211, TMT, INTLIST,                    INTLIST)
+    /* we should have ENUM around here */
+
+    /* Misc properties */
+    TM_PROP(401, TMT, COLORSCHEMES,               STRING)
+    TM_PROP(402, TMT, SIZES,                      STRING)
+    TM_PROP(403, TMT, CHARSET,                    INT)
+
+    /* Documentation properties */
+    TM_PROP(601, TMT, DISPLAYNAME,                STRING)
+    TM_PROP(602, TMT, TOOLTIP,                    STRING)
+    TM_PROP(603, TMT, COMPANY,                    STRING)
+    TM_PROP(604, TMT, AUTHOR,                     STRING)
+    TM_PROP(605, TMT, COPYRIGHT,                  STRING)
+    TM_PROP(606, TMT, URL,                        STRING)
+    TM_PROP(607, TMT, VERSION,                    STRING)
+    TM_PROP(608, TMT, DESCRIPTION,                STRING)
+#   define TMT_FIRST_RCSTRING_NAME                TMT_DISPLAYNAME
+#   define TMT_LAST_RCSTRING_NAME                 TMT_DESCRIPTION
+
+    /* Font theme metric properties */
+    TM_PROP(801, TMT, CAPTIONFONT,                FONT)
+    TM_PROP(802, TMT, SMALLCAPTIONFONT,           FONT)
+    TM_PROP(803, TMT, MENUFONT,                   FONT)
+    TM_PROP(804, TMT, STATUSFONT,                 FONT)
+    TM_PROP(805, TMT, MSGBOXFONT,                 FONT)
+    TM_PROP(806, TMT, ICONTITLEFONT,              FONT)
+#   define TMT_FIRSTFONT                          TMT_CAPTIONFONT
+#   define TMT_LASTFONT                           TMT_ICONTITLEFONT
+
+    /* Bool theme metric properties */
+    TM_PROP(1001, TMT, FLATMENUS,                 BOOL)
+#   define TMT_FIRSTBOOL                          TMT_FLATMENUS
+#   define TMT_LASTBOOL                           TMT_FLATMENUS
+
+    /* Size theme metric properties */
+    TM_PROP(1201, TMT, SIZINGBORDERWIDTH,         SIZE)
+    TM_PROP(1202, TMT, SCROLLBARWIDTH,            SIZE)
+    TM_PROP(1203, TMT, SCROLLBARHEIGHT,           SIZE)
+    TM_PROP(1204, TMT, CAPTIONBARWIDTH,           SIZE)
+    TM_PROP(1205, TMT, CAPTIONBARHEIGHT,          SIZE)
+    TM_PROP(1206, TMT, SMCAPTIONBARWIDTH,         SIZE)
+    TM_PROP(1207, TMT, SMCAPTIONBARHEIGHT,        SIZE)
+    TM_PROP(1208, TMT, MENUBARWIDTH,              SIZE)
+    TM_PROP(1209, TMT, MENUBARHEIGHT,             SIZE)
+#   define TMT_FIRSTSIZE                          TMT_SIZINGBORDERWIDTH
+#   define TMT_LASTSIZE                           TMT_MENUBARHEIGHT
+
+    /* Int theme metric properties */
+    TM_PROP(1301, TMT, MINCOLORDEPTH,             INT)
+#   define TMT_FIRSTINT                           TMT_MINCOLORDEPTH
+#   define TMT_LASTINT                            TMT_MINCOLORDEPTH
+
+    /* String theme metric properties */
+    TM_PROP(1401, TMT, CSSNAME,                   STRING)
+    TM_PROP(1402, TMT, XMLNAME,                   STRING)
+#   define TMT_FIRSTSTRING                        TMT_CSSNAME
+#   define TMT_LASTSTRING                         TMT_XMLNAME
+
+    /* Color theme metric properties */
+    TM_PROP(1601, TMT, SCROLLBAR,                 COLOR)
+    TM_PROP(1602, TMT, BACKGROUND,                COLOR)
+    TM_PROP(1603, TMT, ACTIVECAPTION,             COLOR)
+    TM_PROP(1604, TMT, INACTIVECAPTION,           COLOR)
+    TM_PROP(1605, TMT, MENU,                      COLOR)
+    TM_PROP(1606, TMT, WINDOW,                    COLOR)
+    TM_PROP(1607, TMT, WINDOWFRAME,               COLOR)
+    TM_PROP(1608, TMT, MENUTEXT,                  COLOR)
+    TM_PROP(1609, TMT, WINDOWTEXT,                COLOR)
+    TM_PROP(1610, TMT, CAPTIONTEXT,               COLOR)
+    TM_PROP(1611, TMT, ACTIVEBORDER,              COLOR)
+    TM_PROP(1612, TMT, INACTIVEBORDER,            COLOR)
+    TM_PROP(1613, TMT, APPWORKSPACE,              COLOR)
+    TM_PROP(1614, TMT, HIGHLIGHT,                 COLOR)
+    TM_PROP(1615, TMT, HIGHLIGHTTEXT,             COLOR)
+    TM_PROP(1616, TMT, BTNFACE,                   COLOR)
+    TM_PROP(1617, TMT, BTNSHADOW,                 COLOR)
+    TM_PROP(1618, TMT, GRAYTEXT,                  COLOR)
+    TM_PROP(1619, TMT, BTNTEXT,                   COLOR)
+    TM_PROP(1620, TMT, INACTIVECAPTIONTEXT,       COLOR)
+    TM_PROP(1621, TMT, BTNHIGHLIGHT,              COLOR)
+    TM_PROP(1622, TMT, DKSHADOW3D,                COLOR)
+    TM_PROP(1623, TMT, LIGHT3D,                   COLOR)
+    TM_PROP(1624, TMT, INFOTEXT,                  COLOR)
+    TM_PROP(1625, TMT, INFOBK,                    COLOR)
+    TM_PROP(1626, TMT, BUTTONALTERNATEFACE,       COLOR)
+    TM_PROP(1627, TMT, HOTTRACKING,               COLOR)
+    TM_PROP(1628, TMT, GRADIENTACTIVECAPTION,     COLOR)
+    TM_PROP(1629, TMT, GRADIENTINACTIVECAPTION,   COLOR)
+    TM_PROP(1630, TMT, MENUHILIGHT,               COLOR)
+    TM_PROP(1631, TMT, MENUBAR,                   COLOR)
+#   define TMT_FIRSTCOLOR                         TMT_SCROLLBAR
+#   define TMT_LASTCOLOR                          TMT_MENUBAR
+
+    /* hue substitutions */
+    TM_PROP(1801, TMT, FROMHUE1,                  INT)
+    TM_PROP(1802, TMT, FROMHUE2,                  INT)
+    TM_PROP(1803, TMT, FROMHUE3,                  INT)
+    TM_PROP(1804, TMT, FROMHUE4,                  INT)
+    TM_PROP(1805, TMT, FROMHUE5,                  INT)
+    TM_PROP(1806, TMT, TOHUE1,                    INT)
+    TM_PROP(1807, TMT, TOHUE2,                    INT)
+    TM_PROP(1808, TMT, TOHUE3,                    INT)
+    TM_PROP(1809, TMT, TOHUE4,                    INT)
+    TM_PROP(1810, TMT, TOHUE5,                    INT)
+
+    /* color substitutions */
+    TM_PROP(2001, TMT, FROMCOLOR1,                COLOR)
+    TM_PROP(2002, TMT, FROMCOLOR2,                COLOR)
+    TM_PROP(2003, TMT, FROMCOLOR3,                COLOR)
+    TM_PROP(2004, TMT, FROMCOLOR4,                COLOR)
+    TM_PROP(2005, TMT, FROMCOLOR5,                COLOR)
+    TM_PROP(2006, TMT, TOCOLOR1,                  COLOR)
+    TM_PROP(2007, TMT, TOCOLOR2,                  COLOR)
+    TM_PROP(2008, TMT, TOCOLOR3,                  COLOR)
+    TM_PROP(2009, TMT, TOCOLOR4,                  COLOR)
+    TM_PROP(2010, TMT, TOCOLOR5,                  COLOR)
+
+    /* Bool rendering properties */
+    TM_PROP(2201, TMT, TRANSPARENT,               BOOL)
+    TM_PROP(2202, TMT, AUTOSIZE,                  BOOL)
+    TM_PROP(2203, TMT, BORDERONLY,                BOOL)
+    TM_PROP(2204, TMT, COMPOSITED,                BOOL)
+    TM_PROP(2205, TMT, BGFILL,                    BOOL)
+    TM_PROP(2206, TMT, GLYPHTRANSPARENT,          BOOL)
+    TM_PROP(2207, TMT, GLYPHONLY,                 BOOL)
+    TM_PROP(2208, TMT, ALWAYSSHOWSIZINGBAR,       BOOL)
+    TM_PROP(2209, TMT, MIRRORIMAGE,               BOOL)
+    TM_PROP(2210, TMT, UNIFORMSIZING,             BOOL)
+    TM_PROP(2211, TMT, INTEGRALSIZING,            BOOL)
+    TM_PROP(2212, TMT, SOURCEGROW,                BOOL)
+    TM_PROP(2213, TMT, SOURCESHRINK,              BOOL)
+
+    /* Int rendering properties */
+    TM_PROP(2401, TMT, IMAGECOUNT,                INT)
+    TM_PROP(2402, TMT, ALPHALEVEL,                INT)
+    TM_PROP(2403, TMT, BORDERSIZE,                INT)
+    TM_PROP(2404, TMT, ROUNDCORNERWIDTH,          INT)
+    TM_PROP(2405, TMT, ROUNDCORNERHEIGHT,         INT)
+    TM_PROP(2406, TMT, GRADIENTRATIO1,            INT)
+    TM_PROP(2407, TMT, GRADIENTRATIO2,            INT)
+    TM_PROP(2408, TMT, GRADIENTRATIO3,            INT)
+    TM_PROP(2409, TMT, GRADIENTRATIO4,            INT)
+    TM_PROP(2410, TMT, GRADIENTRATIO5,            INT)
+    TM_PROP(2411, TMT, PROGRESSCHUNKSIZE,         INT)
+    TM_PROP(2412, TMT, PROGRESSSPACESIZE,         INT)
+    TM_PROP(2413, TMT, SATURATION,                INT)
+    TM_PROP(2414, TMT, TEXTBORDERSIZE,            INT)
+    TM_PROP(2415, TMT, ALPHATHRESHOLD,            INT)
+    TM_PROP(2416, TMT, WIDTH,                     SIZE)
+    TM_PROP(2417, TMT, HEIGHT,                    SIZE)
+    TM_PROP(2418, TMT, GLYPHINDEX,                INT)
+    TM_PROP(2419, TMT, TRUESIZESTRETCHMARK,       INT)
+    TM_PROP(2420, TMT, MINDPI1,                   INT)
+    TM_PROP(2421, TMT, MINDPI2,                   INT)
+    TM_PROP(2422, TMT, MINDPI3,                   INT)
+    TM_PROP(2423, TMT, MINDPI4,                   INT)
+    TM_PROP(2424, TMT, MINDPI5,                   INT)
+
+    /* Font rendering properties */
+    TM_PROP(2601, TMT, GLYPHFONT,                 FONT)
+
+    /* Filename rendering properties */
+    TM_PROP(3001, TMT, IMAGEFILE,                 FILENAME)
+    TM_PROP(3002, TMT, IMAGEFILE1,                FILENAME)
+    TM_PROP(3003, TMT, IMAGEFILE2,                FILENAME)
+    TM_PROP(3004, TMT, IMAGEFILE3,                FILENAME)
+    TM_PROP(3005, TMT, IMAGEFILE4,                FILENAME)
+    TM_PROP(3006, TMT, IMAGEFILE5,                FILENAME)
+    TM_PROP(3007, TMT, STOCKIMAGEFILE,            FILENAME)
+    TM_PROP(3008, TMT, GLYPHIMAGEFILE,            FILENAME)
+
+    /* String rendering properties */
+    TM_PROP(3201, TMT, TEXT,                      STRING)
+
+    /* Position rendering properties */
+    TM_PROP(3401, TMT, OFFSET,                    POSITION)
+    TM_PROP(3402, TMT, TEXTSHADOWOFFSET,          POSITION)
+    TM_PROP(3403, TMT, MINSIZE,                   POSITION)
+    TM_PROP(3404, TMT, MINSIZE1,                  POSITION)
+    TM_PROP(3405, TMT, MINSIZE2,                  POSITION)
+    TM_PROP(3406, TMT, MINSIZE3,                  POSITION)
+    TM_PROP(3407, TMT, MINSIZE4,                  POSITION)
+    TM_PROP(3408, TMT, MINSIZE5,                  POSITION)
+    TM_PROP(3409, TMT, NORMALSIZE,                POSITION)
+
+    /* Margin rendering properties */
+    TM_PROP(3601, TMT, SIZINGMARGINS,             MARGINS)
+    TM_PROP(3602, TMT, CONTENTMARGINS,            MARGINS)
+    TM_PROP(3603, TMT, CAPTIONMARGINS,            MARGINS)
+
+    /* Color rendering properties */
+    TM_PROP(3801, TMT, BORDERCOLOR,               COLOR)
+    TM_PROP(3802, TMT, FILLCOLOR,                 COLOR)
+    TM_PROP(3803, TMT, TEXTCOLOR,                 COLOR)
+    TM_PROP(3804, TMT, EDGELIGHTCOLOR,            COLOR)
+    TM_PROP(3805, TMT, EDGEHIGHLIGHTCOLOR,        COLOR)
+    TM_PROP(3806, TMT, EDGESHADOWCOLOR,           COLOR)
+    TM_PROP(3807, TMT, EDGEDKSHADOWCOLOR,         COLOR)
+    TM_PROP(3808, TMT, EDGEFILLCOLOR,             COLOR)
+    TM_PROP(3809, TMT, TRANSPARENTCOLOR,          COLOR)
+    TM_PROP(3810, TMT, GRADIENTCOLOR1,            COLOR)
+    TM_PROP(3811, TMT, GRADIENTCOLOR2,            COLOR)
+    TM_PROP(3812, TMT, GRADIENTCOLOR3,            COLOR)
+    TM_PROP(3813, TMT, GRADIENTCOLOR4,            COLOR)
+    TM_PROP(3814, TMT, GRADIENTCOLOR5,            COLOR)
+    TM_PROP(3815, TMT, SHADOWCOLOR,               COLOR)
+    TM_PROP(3816, TMT, GLOWCOLOR,                 COLOR)
+    TM_PROP(3817, TMT, TEXTBORDERCOLOR,           COLOR)
+    TM_PROP(3818, TMT, TEXTSHADOWCOLOR,           COLOR)
+    TM_PROP(3819, TMT, GLYPHTEXTCOLOR,            COLOR)
+    TM_PROP(3820, TMT, GLYPHTRANSPARENTCOLOR,     COLOR)
+    TM_PROP(3821, TMT, FILLCOLORHINT,             COLOR)
+    TM_PROP(3822, TMT, BORDERCOLORHINT,           COLOR)
+    TM_PROP(3823, TMT, ACCENTCOLORHINT,           COLOR)
+
+    /* Enum rendering properties */
+    TM_PROP(4001, TMT, BGTYPE,                    ENUM)
+    TM_PROP(4002, TMT, BORDERTYPE,                ENUM)
+    TM_PROP(4003, TMT, FILLTYPE,                  ENUM)
+    TM_PROP(4004, TMT, SIZINGTYPE,                ENUM)
+    TM_PROP(4005, TMT, HALIGN,                    ENUM)
+    TM_PROP(4006, TMT, CONTENTALIGNMENT,          ENUM)
+    TM_PROP(4007, TMT, VALIGN,                    ENUM)
+    TM_PROP(4008, TMT, OFFSETTYPE,                ENUM)
+    TM_PROP(4009, TMT, ICONEFFECT,                ENUM)
+    TM_PROP(4010, TMT, TEXTSHADOWTYPE,            ENUM)
+    TM_PROP(4011, TMT, IMAGELAYOUT,               ENUM)
+    TM_PROP(4012, TMT, GLYPHTYPE,                 ENUM)
+    TM_PROP(4013, TMT, IMAGESELECTTYPE,           ENUM)
+    TM_PROP(4014, TMT, GLYPHFONTSIZINGTYPE,       ENUM)
+    TM_PROP(4015, TMT, TRUESIZESCALINGTYPE,       ENUM)
+
+    /* custom properties */
+    TM_PROP(5001, TMT, USERPICTURE,               BOOL)
+    TM_PROP(5002, TMT, DEFAULTPANESIZE,           RECT)
+    TM_PROP(5003, TMT, BLENDCOLOR,                COLOR)
 
-/* PARTS & STATES */
+END_TM_PROPS()
+
+
+/***** PARTS & STATES *****/
 
 /* BUTTON parts */
-#define BP_PUSHBUTTON   1
-#define BP_RADIOBUTTON  2
-#define BP_CHECKBOX     3
-#define BP_GROUPBOX     4
-#define BP_USERBUTTON   5
-
-/* BUTTON PUSHBUTTON states */
-#define PBS_NORMAL      1
-#define PBS_HOT         2
-#define PBS_PRESSED     3
-#define PBS_DISABLED    4
-#define PBS_DEFAULTED   5
-
-/* BUTTON RADIOBUTTON states */
-#define RBS_UNCHECKEDNORMAL   1
-#define RBS_UNCHECKEDHOT      2
-#define RBS_UNCHECKEDPRESSED  3
-#define RBS_UNCHECKEDDISABLED 4
-#define RBS_CHECKEDNORMAL     5
-#define RBS_CHECKEDHOT        6
-#define RBS_CHECKEDPRESSED    7
-#define RBS_CHECKEDDISABLED   8
-
-/* BUTTON CHECBOX states */
-#define CBS_UNCHECKEDNORMAL   1
-#define CBS_UNCHECKEDHOT      2
-#define CBS_UNCHECKEDPRESSED  3
-#define CBS_UNCHECKEDDISABLED 4
-#define CBS_CHECKEDNORMAL     5
-#define CBS_CHECKEDHOT        6
-#define CBS_CHECKEDPRESSED    7
-#define CBS_CHECKEDDISABLED   8
-#define CBS_MIXEDNORMAL       9
-#define CBS_MIXEDHOT          10
-#define CBS_MIXEDPRESSED      11
-#define CBS_MIXEDDISABLED     12
-
-/* BUTTON GROUPBOX states */
-#define GBS_NORMAL   1
-#define GBS_DISABLED 2
+BEGIN_TM_CLASS_PARTS(BUTTON)
+    TM_PART(1, BP, PUSHBUTTON)
+    TM_PART(2, BP, RADIOBUTTON)
+    TM_PART(3, BP, CHECKBOX)
+    TM_PART(4, BP, GROUPBOX)
+    TM_PART(5, BP, USERBUTTON)
+END_TM_CLASS_PARTS()
+
+/* BUTTON - PUSHBUTTON states */
+BEGIN_TM_PART_STATES(PUSHBUTTON)
+    TM_STATE(1, PBS, NORMAL)
+    TM_STATE(2, PBS, HOT)
+    TM_STATE(3, PBS, PRESSED)
+    TM_STATE(4, PBS, DISABLED)
+    TM_STATE(5, PBS, DEFAULTED)
+END_TM_PART_STATES()
+
+/* BUTTON - RADIOBUTTON states */
+BEGIN_TM_PART_STATES(RADIOBUTTON)
+    TM_STATE(1, RBS, UNCHECKEDNORMAL)
+    TM_STATE(2, RBS, UNCHECKEDHOT)
+    TM_STATE(3, RBS, UNCHECKEDPRESSED)
+    TM_STATE(4, RBS, UNCHECKEDDISABLED)
+    TM_STATE(5, RBS, CHECKEDNORMAL)
+    TM_STATE(6, RBS, CHECKEDHOT)
+    TM_STATE(7, RBS, CHECKEDPRESSED)
+    TM_STATE(8, RBS, CHECKEDDISABLED)
+END_TM_PART_STATES()
+
+/* BUTTON - CHECKBOX states */
+BEGIN_TM_PART_STATES(CHECKBOX)
+    TM_STATE(1, CBS, UNCHECKEDNORMAL)
+    TM_STATE(2, CBS, UNCHECKEDHOT)
+    TM_STATE(3, CBS, UNCHECKEDPRESSED)
+    TM_STATE(4, CBS, UNCHECKEDDISABLED)
+    TM_STATE(5, CBS, CHECKEDNORMAL)
+    TM_STATE(6, CBS, CHECKEDHOT)
+    TM_STATE(7, CBS, CHECKEDPRESSED)
+    TM_STATE(8, CBS, CHECKEDDISABLED)
+    TM_STATE(9, CBS, MIXEDNORMAL)
+    TM_STATE(10, CBS, MIXEDHOT)
+    TM_STATE(11, CBS, MIXEDPRESSED)
+    TM_STATE(12, CBS, MIXEDDISABLED)
+END_TM_PART_STATES()
+
+/* BUTTON - GROUPBOX states */
+BEGIN_TM_PART_STATES(GROUPBOX)
+    TM_STATE(1, GBS, NORMAL)
+    TM_STATE(2, GBS, DISABLED)
+END_TM_PART_STATES()
 
 /* CLOCK parts */
-#define CLP_TIME 1
-
-/* CLOCK TIME states */
-#define CLS_NORMAL 1
+BEGIN_TM_CLASS_PARTS(CLOCK)
+    TM_PART(1, CLP, TIME)
+END_TM_CLASS_PARTS()
+
+/* CLOCK states */
+BEGIN_TM_PART_STATES(CLOCK)
+    TM_STATE(1, CLS, NORMAL)
+END_TM_PART_STATES()
 
 /* COMBOBOX parts */
-#define CP_DROPDOWNBUTTON 1
-
-/* COMBOBOX DROPDOWNBUTTON states */
-#define CBXS_NORMAL   1
-#define CBXS_HOT      2
-#define CBXS_PRESSED  3
-#define CBXS_DISABLED 4
+BEGIN_TM_CLASS_PARTS(COMBOBOX)
+    TM_PART(1, CP, DROPDOWNBUTTON)
+END_TM_CLASS_PARTS()
+
+/* COMBOBOX states */
+BEGIN_TM_PART_STATES(COMBOBOX)
+    TM_STATE(1, CBXS, NORMAL)
+    TM_STATE(2, CBXS, HOT)
+    TM_STATE(3, CBXS, PRESSED)
+    TM_STATE(4, CBXS, DISABLED)
+END_TM_PART_STATES()
 
 /* EDIT parts */
-#define EP_EDITTEXT 1
-#define EP_CARET    2
-
-/* EDIT EDITTEXT states */
-#define ETS_NORMAL   1
-#define ETS_HOT      2
-#define ETS_SELECTED 3
-#define ETS_DISABLED 4
-#define ETS_FOCUSED  5
-#define ETS_READONLY 6
-#define ETS_ASSIST   7
+BEGIN_TM_CLASS_PARTS(EDIT)
+    TM_PART(1, EP, EDITTEXT)
+    TM_PART(2, EP, CARET)
+END_TM_CLASS_PARTS()
+
+/* EDIT - EDITTEXT states */
+BEGIN_TM_PART_STATES(EDITTEXT)
+    TM_STATE(1, ETS, NORMAL)
+    TM_STATE(2, ETS, HOT)
+    TM_STATE(3, ETS, SELECTED)
+    TM_STATE(4, ETS, DISABLED)
+    TM_STATE(5, ETS, FOCUSED)
+    TM_STATE(6, ETS, READONLY)
+    TM_STATE(7, ETS, ASSIST)
+END_TM_PART_STATES()
 
 /* EXPLORERBAR parts */
-#define EBP_HEADERBACKGROUND       1
-#define EBP_HEADERCLOSE            2
-#define EBP_HEADERPIN              3
-#define EBP_IEBARMENU              4
-#define EBP_NORMALGROUPBACKGROUND  5
-#define EBP_NORMALGROUPCOLLAPSE    6
-#define EBP_NORMALGROUPEXPAND      7
-#define EBP_NORMALGROUPHEAD        8
-#define EBP_SPECIALGROUPBACKGROUND 9
-#define EBP_SPECIALGROUPCOLLAPSE   10
-#define EBP_SPECIALGROUPEXPAND     11
-#define EBP_SPECIALGROUPHEAD       12
-
-/* EXPLORERBAR HEADERCLOSE states */
-#define EBHC_NORMAL  1
-#define EBHC_HOT     2
-#define EBHC_PRESSED 3
-
-/* EXPLORERBAR HEADERPIN states */
-#define EBHP_NORMAL          1
-#define EBHP_HOT             2
-#define EBHP_PRESSED         3
-#define EBHP_SELECTEDNORMAL  4
-#define EBHP_SELECTEDHOT     5
-#define EBHP_SELECTEDPRESSED 6
-
-/* EXPLORERBAR IEBARMENU states */
-#define EBM_NORMAL  1
-#define EBM_HOT     2
-#define EBM_PRESSED 3
-
-/* EXPLORERBAR NORMALGROUPCOLLAPSE states */
-#define EBNGC_NORMAL  1
-#define EBNGC_HOT     2
-#define EBNGC_PRESSED 3
-
-/* EXPLORERBAR NORMALGROUPEXPAND states */
-#define EBNGE_NORMAL  1
-#define EBNGE_HOT     2
-#define EBNGE_PRESSED 3
-
-/* EXPLORERBAR SPECIALGROUPCOLLAPSE states */
-#define EBSGC_NORMAL  1
-#define EBSGC_HOT     2
-#define EBSGC_PRESSED 3
-
-/* EXPLORERBAR SPECIALGROUPEXPAND states */
-#define EBSGE_NORMAL  1
-#define EBSGE_HOT     2
-#define EBSGE_PRESSED 3
+BEGIN_TM_CLASS_PARTS(EXPLORERBAR)
+    TM_PART(1, EBP, HEADERBACKGROUND)
+    TM_PART(2, EBP, HEADERCLOSE)
+    TM_PART(3, EBP, HEADERPIN)
+    TM_PART(4, EBP, IEBARMENU)
+    TM_PART(5, EBP, NORMALGROUPBACKGROUND)
+    TM_PART(6, EBP, NORMALGROUPCOLLAPSE)
+    TM_PART(7, EBP, NORMALGROUPEXPAND)
+    TM_PART(8, EBP, NORMALGROUPHEAD)
+    TM_PART(9, EBP, SPECIALGROUPBACKGROUND)
+    TM_PART(10, EBP, SPECIALGROUPCOLLAPSE)
+    TM_PART(11, EBP, SPECIALGROUPEXPAND)
+    TM_PART(12, EBP, SPECIALGROUPHEAD)
+END_TM_CLASS_PARTS()
+
+/* EXPLORERBAR - HEADERCLOSE states */
+BEGIN_TM_PART_STATES(HEADERCLOSE)
+    TM_STATE(1, EBHC, NORMAL)
+    TM_STATE(2, EBHC, HOT)
+    TM_STATE(3, EBHC, PRESSED)
+END_TM_PART_STATES()
+
+/* EXPLORERBAR - HEADERPIN states */
+BEGIN_TM_PART_STATES(HEADERPIN)
+    TM_STATE(1, EBHP, NORMAL)
+    TM_STATE(2, EBHP, HOT)
+    TM_STATE(3, EBHP, PRESSED)
+    TM_STATE(4, EBHP, SELECTEDNORMAL)
+    TM_STATE(5, EBHP, SELECTEDHOT)
+    TM_STATE(6, EBHP, SELECTEDPRESSED)
+END_TM_PART_STATES()
+
+/* EXPLORERBAR - IEBARMENU states */
+BEGIN_TM_PART_STATES(IEBARMENU)
+    TM_STATE(1, EBM, NORMAL)
+    TM_STATE(2, EBM, HOT)
+    TM_STATE(3, EBM, PRESSED)
+END_TM_PART_STATES()
+
+/* EXPLORERBAR - NORMALGROUPCOLLAPSE states */
+BEGIN_TM_PART_STATES(NORMALGROUPCOLLAPSE)
+    TM_STATE(1, EBNGC, NORMAL)
+    TM_STATE(2, EBNGC, HOT)
+    TM_STATE(3, EBNGC, PRESSED)
+END_TM_PART_STATES()
+
+/* EXPLORERBAR - NORMALGROUPEXPAND states */
+BEGIN_TM_PART_STATES(NORMALGROUPEXPAND)
+    TM_STATE(1, EBNGE, NORMAL)
+    TM_STATE(2, EBNGE, HOT)
+    TM_STATE(3, EBNGE, PRESSED)
+END_TM_PART_STATES()
+
+/* EXPLORERBAR - SPECIALGROUPCOLLAPSE states */
+BEGIN_TM_PART_STATES(SPECIALGROUPCOLLAPSE)
+    TM_STATE(1, EBSGC, NORMAL)
+    TM_STATE(2, EBSGC, HOT)
+    TM_STATE(3, EBSGC, PRESSED)
+END_TM_PART_STATES()
+
+/* EXPLORERBAR - SPECIALGROUPEXPAND states */
+BEGIN_TM_PART_STATES(SPECIALGROUPEXPAND)
+    TM_STATE(1, EBSGE, NORMAL)
+    TM_STATE(2, EBSGE, HOT)
+    TM_STATE(3, EBSGE, PRESSED)
+END_TM_PART_STATES()
 
 /* GLOBALS parts */
-#define GP_BORDER   1
-#define GP_LINEHORZ 2
-#define GP_LINEVERT 3
-
-/* GLOBALS BORDER states */
-#define BSS_FLAT   1
-#define BSS_RAISED 2
-#define BSS_SUNKEN 3
-
-/* GLOBALS LINEHORZ states */
-#define LHS_FLAT   1
-#define LHS_RAISED 2
-#define LHS_SUNKEN 3
-
-/* GLOBAL LINEVERT states */
-#define LVS_FLAT   1
-#define LVS_RAISED 2
-#define LVS_SUNKEN 3
+BEGIN_TM_CLASS_PARTS(GLOBALS)
+    TM_PART(1, GP, BORDER)
+    TM_PART(2, GP, LINEHORZ)
+    TM_PART(3, GP, LINEVERT)
+END_TM_CLASS_PARTS()
+
+/* GLOBALS - BORDER states */
+BEGIN_TM_PART_STATES(BORDER)
+    TM_STATE(1, BSS, FLAT)
+    TM_STATE(2, BSS, RAISED)
+    TM_STATE(3, BSS, SUNKEN)
+END_TM_PART_STATES()
+
+/* GLOBALS - LINEHORZ states */
+BEGIN_TM_PART_STATES(LINEHORZ)
+    TM_STATE(1, LHS, FLAT)
+    TM_STATE(2, LHS, RAISED)
+    TM_STATE(3, LHS, SUNKEN)
+END_TM_PART_STATES()
+
+/* GLOBAL - LINEVERT states */
+BEGIN_TM_PART_STATES(LINEVERT)
+    TM_STATE(1, LVS, FLAT)
+    TM_STATE(2, LVS, RAISED)
+    TM_STATE(3, LVS, SUNKEN)
+END_TM_PART_STATES()
 
 /* HEADER parts */
-#define HP_HEADERITEM      1
-#define HP_HEADERITEMLEFT  2
-#define HP_HEADERITEMRIGHT 3
-#define HP_HEADERSORTARROW 4
-
-/* HEADER HEADERITEM states */
-#define HIS_NORMAL  1
-#define HIS_HOT     2
-#define HIS_PRESSED 3
-
-/* HEADER HEADERITEMLEFT states */
-#define HILS_NORMAL  1
-#define HILS_HOT     2
-#define HILS_PRESSED 3
-
-/* HEADER HEADERITEMRIGHT states */
-#define HIRS_NORMAL  1
-#define HIRS_HOT     2
-#define HIRS_PRESSED 3
-
-/* HEADER HEADERSORTARROW states */
-#define HSAS_SORTEDUP   1
-#define HSAS_SORTEDDOWN 2
+BEGIN_TM_CLASS_PARTS(HEADER)
+    TM_PART(1, HP, HEADERITEM)
+    TM_PART(2, HP, HEADERITEMLEFT)
+    TM_PART(3, HP, HEADERITEMRIGHT)
+    TM_PART(4, HP, HEADERSORTARROW)
+END_TM_CLASS_PARTS()
+
+/* HEADER - HEADERITEM states */
+BEGIN_TM_PART_STATES(HEADERITEM)
+    TM_STATE(1, HIS, NORMAL)
+    TM_STATE(2, HIS, HOT)
+    TM_STATE(3, HIS, PRESSED)
+END_TM_PART_STATES()
+
+/* HEADER - HEADERITEMLEFT states */
+BEGIN_TM_PART_STATES(HEADERITEMLEFT)
+    TM_STATE(1, HILS, NORMAL)
+    TM_STATE(2, HILS, HOT)
+    TM_STATE(3, HILS, PRESSED)
+END_TM_PART_STATES()
+
+/* HEADER - HEADERITEMRIGHT states */
+BEGIN_TM_PART_STATES(HEADERITEMRIGHT)
+    TM_STATE(1, HIRS, NORMAL)
+    TM_STATE(2, HIRS, HOT)
+    TM_STATE(3, HIRS, PRESSED)
+END_TM_PART_STATES()
+
+/* HEADER - HEADERSORTARROW states */
+BEGIN_TM_PART_STATES(HEADERSORTARROW)
+    TM_STATE(1, HSAS, SORTEDUP)
+    TM_STATE(2, HSAS, SORTEDDOWN)
+END_TM_PART_STATES()
 
 /* LISTVIEW parts */
-#define LVP_LISTITEM         1
-#define LVP_LISTGROUP        2
-#define LVP_LISTDETAIL       3
-#define LVP_LISTSORTEDDETAIL 4
-#define LVP_EMPTYTEXT        5
-
-/* LISTVIEW LISTITEM states */
-#define LIS_NORMAL           1
-#define LIS_HOT              2
-#define LIS_SELECTED         3
-#define LIS_DISABLED         4
-#define LIS_SELECTEDNOTFOCUS 5
+BEGIN_TM_CLASS_PARTS(LISTVIEW)
+    TM_PART(1, LVP, LISTITEM)
+    TM_PART(2, LVP, LISTGROUP)
+    TM_PART(3, LVP, LISTDETAIL)
+    TM_PART(4, LVP, LISTSORTEDDETAIL)
+    TM_PART(5, LVP, EMPTYTEXT)
+END_TM_CLASS_PARTS()
+
+/* LISTVIEW - LISTITEM states */
+BEGIN_TM_PART_STATES(LISTITEM)
+    TM_STATE(1, LIS, NORMAL)
+    TM_STATE(2, LIS, HOT)
+    TM_STATE(3, LIS, SELECTED)
+    TM_STATE(4, LIS, DISABLED)
+    TM_STATE(5, LIS, SELECTEDNOTFOCUS)
+END_TM_PART_STATES()
 
 /* MENU parts */
-#define MP_MENUITEM        1
-#define MP_MENUDROPDOWN    2
-#define MP_MENUBARITEM     3
-#define MP_MENUBARDROPDOWN 4
-#define MP_CHEVRON         5
-#define MP_SEPARATOR       6
-
-/* MENU * states */
-#define MS_NORMAL    1
-#define MS_SELECTED  2
-#define MS_DEMOTED   3
+BEGIN_TM_CLASS_PARTS(MENU)
+    TM_PART(1, MP, MENUITEM)
+    TM_PART(2, MP, MENUDROPDOWN)
+    TM_PART(3, MP, MENUBARITEM)
+    TM_PART(4, MP, MENUBARDROPDOWN)
+    TM_PART(5, MP, CHEVRON)
+    TM_PART(6, MP, SEPARATOR)
+END_TM_CLASS_PARTS()
+
+/* MENU - * states */
+BEGIN_TM_PART_STATES(MENU)
+    TM_STATE(1, MS, NORMAL)
+    TM_STATE(2, MS, SELECTED)
+    TM_STATE(3, MS, DEMOTED)
+END_TM_PART_STATES()
 
 /* MENUBAND parts */
-#define MDP_NEWAPPBUTTON 1
+BEGIN_TM_CLASS_PARTS(MENUBAND)
+    TM_PART(1, MDP, NEWAPPBUTTON)
 /* MDP_SEPERATOR isn't a typo, as per Microsoft's headers */
-#define MDP_SEPERATOR    2
+    TM_PART(2, MDP, SEPERATOR)
+END_TM_CLASS_PARTS()
 
-/* MENUBAND NEWAPPBUTTON states */
-#define MDS_NORMAL     1
-#define MDS_HOT        2
-#define MDS_PRESSED    3
-#define MDS_DISABLED   4
-#define MDS_CHECKED    5
-#define MDS_HOTCHECKED 6
+/* MENUBAND states */
+BEGIN_TM_PART_STATES(MENUBAND)
+    TM_STATE(1, MDS, NORMAL)
+    TM_STATE(2, MDS, HOT)
+    TM_STATE(3, MDS, PRESSED)
+    TM_STATE(4, MDS, DISABLED)
+    TM_STATE(5, MDS, CHECKED)
+    TM_STATE(6, MDS, HOTCHECKED)
+END_TM_PART_STATES()
 
 /* PAGE parts */
-#define PGRP_UP       1
-#define PGRP_DOWN     2
-#define PGRP_UPHORZ   3
-#define PGRP_DOWNHORZ 4
-
-/* PAGE UP states */
-#define UPS_NORMAL   1
-#define UPS_HOT      2
-#define UPS_PRESSED  3
-#define UPS_DISABLED 4
-
-/* PAGE DOWN states  */
-#define DNS_NORMAL   1
-#define DNS_HOT      2
-#define DNS_PRESSED  3
-#define DNS_DISABLED 4
-
-/* PAGE UPHORZ states */
-#define UPHZS_NORMAL   1
-#define UPHZS_HOT      2
-#define UPHZS_PRESSED  3
-#define UPHZS_DISABLED 4
-
-/* PAGE DOWNHORZ states */
-#define DNHZS_NORMAL   1
-#define DNHZS_HOT      2
-#define DNHZS_PRESSED  3
-#define DNHZS_DISABLED 4
+BEGIN_TM_CLASS_PARTS(PAGE)
+    TM_PART(1, PGRP, UP)
+    TM_PART(2, PGRP, DOWN)
+    TM_PART(3, PGRP, UPHORZ)
+    TM_PART(4, PGRP, DOWNHORZ)
+END_TM_CLASS_PARTS()
+
+/* PAGE - UP states */
+BEGIN_TM_PART_STATES(UP)
+    TM_STATE(1, UPS, NORMAL)
+    TM_STATE(2, UPS, HOT)
+    TM_STATE(3, UPS, PRESSED)
+    TM_STATE(4, UPS, DISABLED)
+END_TM_PART_STATES()
+
+/* PAGE - DOWN states  */
+BEGIN_TM_PART_STATES(DOWN)
+    TM_STATE(1, DNS, NORMAL)
+    TM_STATE(2, DNS, HOT)
+    TM_STATE(3, DNS, PRESSED)
+    TM_STATE(4, DNS, DISABLED)
+END_TM_PART_STATES()
+
+/* PAGE - UPHORZ states */
+BEGIN_TM_PART_STATES(UPHORZ)
+    TM_STATE(1, UPHZS, NORMAL)
+    TM_STATE(2, UPHZS, HOT)
+    TM_STATE(3, UPHZS, PRESSED)
+    TM_STATE(4, UPHZS, DISABLED)
+END_TM_PART_STATES()
+
+/* PAGE - DOWNHORZ states */
+BEGIN_TM_PART_STATES(DOWNHORZ)
+    TM_STATE(1, DNHZS, NORMAL)
+    TM_STATE(2, DNHZS, HOT)
+    TM_STATE(3, DNHZS, PRESSED)
+    TM_STATE(4, DNHZS, DISABLED)
+END_TM_PART_STATES()
 
 /* PROGRESS parts */
-#define PP_BAR       1
-#define PP_BARVERT   2
-#define PP_CHUNK     3
-#define PP_CHUNKVERT 4
+BEGIN_TM_CLASS_PARTS(PROGRESS)
+    TM_PART(1, PP, BAR)
+    TM_PART(2, PP, BARVERT)
+    TM_PART(3, PP, CHUNK)
+    TM_PART(4, PP, CHUNKVERT)
+END_TM_CLASS_PARTS()
 
 /* REBAR parts */
-#define RP_GRIPPER     1
-#define RP_GRIPPERVERT 2
-#define RP_BAND        3
-#define RP_CHEVRON     4
-#define RP_CHEVRONVERT 5
-
-/* REBAR CHEVRON states */
-#define CHEVS_NORMAL  1
-#define CHEVS_HOT     2
-#define CHEVS_PRESSED 3
+BEGIN_TM_CLASS_PARTS(REBAR)
+    TM_PART(1, RP, GRIPPER)
+    TM_PART(2, RP, GRIPPERVERT)
+    TM_PART(3, RP, BAND)
+    TM_PART(4, RP, CHEVRON)
+    TM_PART(5, RP, CHEVRONVERT)
+END_TM_CLASS_PARTS()
+
+/* REBAR - CHEVRON states */
+BEGIN_TM_PART_STATES(CHEVRON)
+    TM_STATE(1, CHEVS, NORMAL)
+    TM_STATE(2, CHEVS, HOT)
+    TM_STATE(3, CHEVS, PRESSED)
+END_TM_PART_STATES()
 
 /* SCROLLBAR parts */
-#define SBP_ARROWBTN       1
-#define SBP_THUMBBTNHORZ   2
-#define SBP_THUMBBTNVERT   3
-#define SBP_LOWERTRACKHORZ 4
-#define SBP_UPPERTRACKHORZ 5
-#define SBP_LOWERTRACKVERT 6
-#define SBP_UPPERTRACKVERT 7
-#define SBP_GRIPPERHORZ    8
-#define SBP_GRIPPERVERT    9
-#define SBP_SIZEBOX        10
-
-/* SCROLLBAR ARROWBTN states */
-#define ABS_UPNORMAL      1
-#define ABS_UPHOT         2
-#define ABS_UPPRESSED     3
-#define ABS_UPDISABLED    4
-#define ABS_DOWNNORMAL    5
-#define ABS_DOWNHOT       6
-#define ABS_DOWNPRESSED   7
-#define ABS_DOWNDISABLED  8
-#define ABS_LEFTNORMAL    9
-#define ABS_LEFTHOT       10
-#define ABS_LEFTPRESSED   11
-#define ABS_LEFTDISABLED  12
-#define ABS_RIGHTNORMAL   13
-#define ABS_RIGHTHOT      14
-#define ABS_RIGHTPRESSED  15
-#define ABS_RIGHTDISABLED 16
-
-/* SCROLLBAR LOWER* / THUMB* / UPPER* states */
-#define SCRBS_NORMAL   1
-#define SCRBS_HOT      2
-#define SCRBS_PRESSED  3
-#define SCRBS_DISABLED 4
-
-/* SCROLLBAR SIZEBOX states */
-#define SZB_RIGHTALIGN 1
-#define SZB_LEFTALIGN  2
+BEGIN_TM_CLASS_PARTS(SCROLLBAR)
+    TM_PART(1, SBP, ARROWBTN)
+    TM_PART(2, SBP, THUMBBTNHORZ)
+    TM_PART(3, SBP, THUMBBTNVERT)
+    TM_PART(4, SBP, LOWERTRACKHORZ)
+    TM_PART(5, SBP, UPPERTRACKHORZ)
+    TM_PART(6, SBP, LOWERTRACKVERT)
+    TM_PART(7, SBP, UPPERTRACKVERT)
+    TM_PART(8, SBP, GRIPPERHORZ)
+    TM_PART(9, SBP, GRIPPERVERT)
+    TM_PART(10, SBP, SIZEBOX)
+END_TM_CLASS_PARTS()
+
+/* SCROLLBAR - ARROWBTN states */
+BEGIN_TM_PART_STATES(ARROWBTN)
+    TM_STATE(1, ABS, UPNORMAL)
+    TM_STATE(2, ABS, UPHOT)
+    TM_STATE(3, ABS, UPPRESSED)
+    TM_STATE(4, ABS, UPDISABLED)
+    TM_STATE(5, ABS, DOWNNORMAL)
+    TM_STATE(6, ABS, DOWNHOT)
+    TM_STATE(7, ABS, DOWNPRESSED)
+    TM_STATE(8, ABS, DOWNDISABLED)
+    TM_STATE(9, ABS, LEFTNORMAL)
+    TM_STATE(10, ABS, LEFTHOT)
+    TM_STATE(11, ABS, LEFTPRESSED)
+    TM_STATE(12, ABS, LEFTDISABLED)
+    TM_STATE(13, ABS, RIGHTNORMAL)
+    TM_STATE(14, ABS, RIGHTHOT)
+    TM_STATE(15, ABS, RIGHTPRESSED)
+    TM_STATE(16, ABS, RIGHTDISABLED)
+END_TM_PART_STATES()
+
+/* SCROLLBAR - LOWER* / THUMB* / UPPER* states */
+BEGIN_TM_PART_STATES(SCROLLBAR)
+    TM_STATE(1, SCRBS, NORMAL)
+    TM_STATE(2, SCRBS, HOT)
+    TM_STATE(3, SCRBS, PRESSED)
+    TM_STATE(4, SCRBS, DISABLED)
+END_TM_PART_STATES()
+
+/* SCROLLBAR - SIZEBOX states */
+BEGIN_TM_PART_STATES(SIZEBOX)
+    TM_STATE(1, SZB, RIGHTALIGN)
+    TM_STATE(2, SZB, LEFTALIGN)
+END_TM_PART_STATES()
 
 /* SPIN parts */
-#define SPNP_UP       1
-#define SPNP_DOWN     2
-#define SPNP_UPHORZ   3
-#define SPNP_DOWNHORZ 4
+BEGIN_TM_CLASS_PARTS(SPIN)
+    TM_PART(1, SPNP, UP)
+    TM_PART(2, SPNP, DOWN)
+    TM_PART(3, SPNP, UPHORZ)
+    TM_PART(4, SPNP, DOWNHORZ)
+END_TM_CLASS_PARTS()
 
 /* SPIN * states */
 /* See PAGE states */
 
 /* STARTPANEL parts */
-#define SPP_USERPANE            1
-#define SPP_MOREPROGRAMS        2
-#define SPP_MOREPROGRAMSARROW   3
-#define SPP_PROGLIST            4
-#define SPP_PROGLISTSEPARATOR   5
-#define SPP_PLACESLIST          6
-#define SPP_PLACESLISTSEPARATOR 7
-#define SPP_LOGOFF              8
-#define SPP_LOGOFFBUTTONS       9
-#define SPP_USERPICTURE         10
-#define SPP_PREVIEW             11
-
-/* STARTPANEL MOREPROGRAMSARROW states */
-#define SPS_NORMAL  1
-#define SPS_HOT     2
-#define SPS_PRESSED 3
-
-/* STARTPANEL LOGOFFBUTTONS states */
-#define SPLS_NORMAL  1
-#define SPLS_HOT     2
-#define SPLS_PRESSED 3
+BEGIN_TM_CLASS_PARTS(STARTPANEL)
+    TM_PART(1, SPP, USERPANE)
+    TM_PART(2, SPP, MOREPROGRAMS)
+    TM_PART(3, SPP, MOREPROGRAMSARROW)
+    TM_PART(4, SPP, PROGLIST)
+    TM_PART(5, SPP, PROGLISTSEPARATOR)
+    TM_PART(6, SPP, PLACESLIST)
+    TM_PART(7, SPP, PLACESLISTSEPARATOR)
+    TM_PART(8, SPP, LOGOFF)
+    TM_PART(9, SPP, LOGOFFBUTTONS)
+    TM_PART(10, SPP, USERPICTURE)
+    TM_PART(11, SPP, PREVIEW)
+END_TM_CLASS_PARTS()
+
+/* STARTPANEL - MOREPROGRAMSARROW states */
+BEGIN_TM_PART_STATES(MOREPROGRAMSARROW)
+    TM_STATE(1, SPS, NORMAL)
+    TM_STATE(2, SPS, HOT)
+    TM_STATE(3, SPS, PRESSED)
+END_TM_PART_STATES()
+
+/* STARTPANEL - LOGOFFBUTTONS states */
+BEGIN_TM_PART_STATES(LOGOFFBUTTONS)
+    TM_STATE(1, SPLS, NORMAL)
+    TM_STATE(2, SPLS, HOT)
+    TM_STATE(3, SPLS, PRESSED)
+END_TM_PART_STATES()
 
 /* STATUS parts */
-#define SP_PANE        1
-#define SP_GRIPPERPANE 2
-#define SP_GRIPPER     3
+BEGIN_TM_CLASS_PARTS(STATUS)
+    TM_PART(1, SP, PANE)
+    TM_PART(2, SP, GRIPPERPANE)
+    TM_PART(3, SP, GRIPPER)
+END_TM_CLASS_PARTS()
 
 /* TAB parts */
-#define TABP_TABITEM             1
-#define TABP_TABITEMLEFTEDGE     2
-#define TABP_TABITEMRIGHTEDGE    3
-#define TABP_TABITEMBOTHEDGE     4
-#define TABP_TOPTABITEM          5
-#define TABP_TOPTABITEMLEFTEDGE  6
-#define TABP_TOPTABITEMRIGHTEDGE 7
-#define TABP_TOPTABITEMBOTHEDGE  8
-#define TABP_PANE                9
-#define TABP_BODY                10
-
-/* TAB TABITEM states */
-#define TIS_NORMAL   1
-#define TIS_HOT      2
-#define TIS_SELECTED 3
-#define TIS_DISABLED 4
-#define TIS_FOCUSED  5
-
-/* TAB TABITEMLEFTEDGE states */
-#define TILES_NORMAL   1
-#define TILES_HOT      2
-#define TILES_SELECTED 3
-#define TILES_DISABLED 4
-#define TILES_FOCUSED  5
-
-/* TAB TABITEMRIGHTEDGE states */
-#define TIRES_NORMAL   1
-#define TIRES_HOT      2
-#define TIRES_SELECTED 3
-#define TIRES_DISABLED 4
-#define TIRES_FOCUSED  5
-
-/* TAB TABITEMBOTHEDGES states */
-#define TIBES_NORMAL   1
-#define TIBES_HOT      2
-#define TIBES_SELECTED 3
-#define TIBES_DISABLED 4
-#define TIBES_FOCUSED  5
-
-/* TAB TOPTABITEM states */
-#define TTIS_NORMAL   1
-#define TTIS_HOT      2
-#define TTIS_SELECTED 3
-#define TTIS_DISABLED 4
-#define TTIS_FOCUSED  5
-
-/* TAB TOPTABITEMLEFTEDGE states */
-#define TTILES_NORMAL   1
-#define TTILES_HOT      2
-#define TTILES_SELECTED 3
-#define TTILES_DISABLED 4
-#define TTILES_FOCUSED  5
-
-/* TAB TOPTABITEMRIGHTEDGE states */
-#define TTIRES_NORMAL   1
-#define TTIRES_HOT      2
-#define TTIRES_SELECTED 3
-#define TTIRES_DISABLED 4
-#define TTIRES_FOCUSED  5
-
-/* TAB TOPTABITEMBOTHEDGES states */
-#define TTIBES_NORMAL   1
-#define TTIBES_HOT      2
-#define TTIBES_SELECTED 3
-#define TTIBES_DISABLED 4
-#define TTIBES_FOCUSED  5
+BEGIN_TM_CLASS_PARTS(TAB)
+    TM_PART(1, TABP, TABITEM)
+    TM_PART(2, TABP, TABITEMLEFTEDGE)
+    TM_PART(3, TABP, TABITEMRIGHTEDGE)
+    TM_PART(4, TABP, TABITEMBOTHEDGE)
+    TM_PART(5, TABP, TOPTABITEM)
+    TM_PART(6, TABP, TOPTABITEMLEFTEDGE)
+    TM_PART(7, TABP, TOPTABITEMRIGHTEDGE)
+    TM_PART(8, TABP, TOPTABITEMBOTHEDGE)
+    TM_PART(9, TABP, PANE)
+    TM_PART(10, TABP, BODY)
+END_TM_CLASS_PARTS()
+
+/* TAB - TABITEM states */
+BEGIN_TM_PART_STATES(TABITEM)
+    TM_STATE(1, TIS, NORMAL)
+    TM_STATE(2, TIS, HOT)
+    TM_STATE(3, TIS, SELECTED)
+    TM_STATE(4, TIS, DISABLED)
+    TM_STATE(5, TIS, FOCUSED)
+END_TM_PART_STATES()
+
+/* TAB - TABITEMLEFTEDGE states */
+BEGIN_TM_PART_STATES(TABITEMLEFTEDGE)
+    TM_STATE(1, TILES, NORMAL)
+    TM_STATE(2, TILES, HOT)
+    TM_STATE(3, TILES, SELECTED)
+    TM_STATE(4, TILES, DISABLED)
+    TM_STATE(5, TILES, FOCUSED)
+END_TM_PART_STATES()
+
+/* TAB - TABITEMRIGHTEDGE states */
+BEGIN_TM_PART_STATES(TABITEMRIGHTEDGE)
+    TM_STATE(1, TIRES, NORMAL)
+    TM_STATE(2, TIRES, HOT)
+    TM_STATE(3, TIRES, SELECTED)
+    TM_STATE(4, TIRES, DISABLED)
+    TM_STATE(5, TIRES, FOCUSED)
+END_TM_PART_STATES()
+
+/* TAB - TABITEMBOTHEDGES states */
+BEGIN_TM_PART_STATES(TABITEMBOTHEDGES)
+    TM_STATE(1, TIBES, NORMAL)
+    TM_STATE(2, TIBES, HOT)
+    TM_STATE(3, TIBES, SELECTED)
+    TM_STATE(4, TIBES, DISABLED)
+    TM_STATE(5, TIBES, FOCUSED)
+END_TM_PART_STATES()
+
+/* TAB - TOPTABITEM states */
+BEGIN_TM_PART_STATES(TOPTABITEM)
+    TM_STATE(1, TTIS, NORMAL)
+    TM_STATE(2, TTIS, HOT)
+    TM_STATE(3, TTIS, SELECTED)
+    TM_STATE(4, TTIS, DISABLED)
+    TM_STATE(5, TTIS, FOCUSED)
+END_TM_PART_STATES()
+
+/* TAB - TOPTABITEMLEFTEDGE states */
+BEGIN_TM_PART_STATES(TOPTABITEMLEFTEDGE)
+    TM_STATE(1, TTILES, NORMAL)
+    TM_STATE(2, TTILES, HOT)
+    TM_STATE(3, TTILES, SELECTED)
+    TM_STATE(4, TTILES, DISABLED)
+    TM_STATE(5, TTILES, FOCUSED)
+END_TM_PART_STATES()
+
+/* TAB - TOPTABITEMRIGHTEDGE states */
+BEGIN_TM_PART_STATES(TOPTABITEMRIGHTEDGE)
+    TM_STATE(1, TTIRES, NORMAL)
+    TM_STATE(2, TTIRES, HOT)
+    TM_STATE(3, TTIRES, SELECTED)
+    TM_STATE(4, TTIRES, DISABLED)
+    TM_STATE(5, TTIRES, FOCUSED)
+END_TM_PART_STATES()
+
+/* TAB - TOPTABITEMBOTHEDGES states */
+BEGIN_TM_PART_STATES(TOPTABITEMBOTHEDGES)
+    TM_STATE(1, TTIBES, NORMAL)
+    TM_STATE(2, TTIBES, HOT)
+    TM_STATE(3, TTIBES, SELECTED)
+    TM_STATE(4, TTIBES, DISABLED)
+    TM_STATE(5, TTIBES, FOCUSED)
+END_TM_PART_STATES()
 
 /* TASKBAND parts */
-#define TDP_GROUPCOUNT           1
-#define TDP_FLASHBUTTON          2
-#define TDP_FLASHBUTTONGROUPMENU 3
+BEGIN_TM_CLASS_PARTS(TASKBAND)
+    TM_PART(1, TDP, GROUPCOUNT)
+    TM_PART(2, TDP, FLASHBUTTON)
+    TM_PART(3, TDP, FLASHBUTTONGROUPMENU)
+END_TM_CLASS_PARTS()
 
 /* TASKBAR parts */
-#define TBP_BACKGROUNDBOTTOM 1
-#define TBP_BACKGROUNDRIGHT  2
-#define TBP_BACKGROUNDTOP    3
-#define TBP_BACKGROUNDLEFT   4
-#define TBP_SIZINGBARBOTTOM  5
-#define TBP_SIZINGBARRIGHT   6
-#define TBP_SIZINGBARTOP     7
-#define TBP_SIZINGBARLEFT    8
+BEGIN_TM_CLASS_PARTS(TASKBAR)
+    TM_PART(1, TBP, BACKGROUNDBOTTOM)
+    TM_PART(2, TBP, BACKGROUNDRIGHT)
+    TM_PART(3, TBP, BACKGROUNDTOP)
+    TM_PART(4, TBP, BACKGROUNDLEFT)
+    TM_PART(5, TBP, SIZINGBARBOTTOM)
+    TM_PART(6, TBP, SIZINGBARRIGHT)
+    TM_PART(7, TBP, SIZINGBARTOP)
+    TM_PART(8, TBP, SIZINGBARLEFT)
+END_TM_CLASS_PARTS()
 
 /* TOOLBAR parts */
-#define TP_BUTTON              1
-#define TP_DROPDOWNBUTTON      2
-#define TP_SPLITBUTTON         3
-#define TP_SPLITBUTTONDROPDOWN 4
-#define TP_SEPARATOR           5
-#define TP_SEPARATORVERT       6
-
-/* TOOLBAR * states */
-#define TS_NORMAL     1
-#define TS_HOT        2
-#define TS_PRESSED    3
-#define TS_DISABLED   4
-#define TS_CHECKED    5
-#define TS_HOTCHECKED 6
+BEGIN_TM_CLASS_PARTS(TOOLBAR)
+    TM_PART(1, TP, BUTTON)
+    TM_PART(2, TP, DROPDOWNBUTTON)
+    TM_PART(3, TP, SPLITBUTTON)
+    TM_PART(4, TP, SPLITBUTTONDROPDOWN)
+    TM_PART(5, TP, SEPARATOR)
+    TM_PART(6, TP, SEPARATORVERT)
+END_TM_CLASS_PARTS()
+
+/* TOOLBAR - * states */
+BEGIN_TM_PART_STATES(TOOLBAR)
+    TM_STATE(1, TS, NORMAL)
+    TM_STATE(2, TS, HOT)
+    TM_STATE(3, TS, PRESSED)
+    TM_STATE(4, TS, DISABLED)
+    TM_STATE(5, TS, CHECKED)
+    TM_STATE(6, TS, HOTCHECKED)
+END_TM_PART_STATES()
 
 /* TOOLTIP parts */
-#define TTP_STANDARD      1
-#define TTP_STANDARDTITLE 2
-#define TTP_BALLOON       3
-#define TTP_BALLOONTITLE  4
-#define TTP_CLOSE         5
-
-/* TOOLTIP STANDARD states */
-#define TTSS_NORMAL 1
-#define TTSS_LINK   2
+BEGIN_TM_CLASS_PARTS(TOOLTIP)
+    TM_PART(1, TTP, STANDARD)
+    TM_PART(2, TTP, STANDARDTITLE)
+    TM_PART(3, TTP, BALLOON)
+    TM_PART(4, TTP, BALLOONTITLE)
+    TM_PART(5, TTP, CLOSE)
+END_TM_CLASS_PARTS()
+
+/* TOOLTIP - STANDARD states */
+BEGIN_TM_PART_STATES(STANDARD)
+    TM_STATE(1, TTSS, NORMAL)
+    TM_STATE(2, TTSS, LINK)
+END_TM_PART_STATES()
 
-/* TOOLTIP STANDARDTITLE states */
+/* TOOLTIP - STANDARDTITLE states */
 /* See TOOLTIP STANDARD  */
 
-/* TOOLTIP BALLOON states */
-#define TTBS_NORMAL 1
-#define TTBS_LINK   2
-
-/* TOOLTIP BALOONTITLE states */
-/* See TOOLTIP BALOON */
-
-/* TOOLTIP CLOSE states */
-#define TTCS_NORMAL  1
-#define TTCS_HOT     2
-#define TTCS_PRESSED 3
+/* TOOLTIP - BALLOON states */
+BEGIN_TM_PART_STATES(BALLOON)
+    TM_STATE(1, TTBS, NORMAL)
+    TM_STATE(2, TTBS, LINK)
+END_TM_PART_STATES()
+
+/* TOOLTIP - BALLOONTITLE states */
+/* See TOOLTIP BALLOON */
+
+/* TOOLTIP - CLOSE states */
+BEGIN_TM_PART_STATES(CLOSE)
+    TM_STATE(1, TTCS, NORMAL)
+    TM_STATE(2, TTCS, HOT)
+    TM_STATE(3, TTCS, PRESSED)
+END_TM_PART_STATES()
 
 /* TRACKBAR parts */
-#define TKP_TRACK       1
-#define TKP_TRACKVERT   2
-#define TKP_THUMB       3
-#define TKP_THUMBBOTTOM 4
-#define TKP_THUMBTOP    5
-#define TKP_THUMBVERT   6
-#define TKP_THUMBLEFT   7
-#define TKP_THUMBRIGHT  8
-#define TKP_TICS        9
-#define TKP_TICSVERT    10
-
-/* TRACKBAR TRACK states */
-#define TRS_NORMAL 1
-
-/* TRACKBAR TRACKVERT states */
-#define TRVS_NORMAL 1
-
-/* TRACKBAR THUMB states */
-#define TUS_NORMAL   1
-#define TUS_HOT      2
-#define TUS_PRESSED  3
-#define TUS_FOCUSED  4
-#define TUS_DISABLED 5
-
-/* TRACKBAR THUMBBOTTOM states */
-#define TUBS_NORMAL   1
-#define TUBS_HOT      2
-#define TUBS_PRESSED  3
-#define TUBS_FOCUSED  4
-#define TUBS_DISABLED 5
-
-/* TRACKBAR THUMBTOP states */
-#define TUTS_NORMAL   1
-#define TUTS_HOT      2
-#define TUTS_PRESSED  3
-#define TUTS_FOCUSED  4
-#define TUTS_DISABLED 5
-
-/* TRACKBAR THUMBVERT states */
-#define TUVS_NORMAL   1
-#define TUVS_HOT      2
-#define TUVS_PRESSED  3
-#define TUVS_FOCUSED  4
-#define TUVS_DISABLED 5
-
-/* TRACKBAR THUMBLEFT states */
-#define TUVLS_NORMAL   1
-#define TUVLS_HOT      2
-#define TUVLS_PRESSED  3
-#define TUVLS_FOCUSED  4
-#define TUVLS_DISABLED 5
-
-/* TRACKBAR THUMBRIGHT states */
-#define TUVRS_NORMAL   1
-#define TUVRS_HOT      2
-#define TUVRS_PRESSED  3
-#define TUVRS_FOCUSED  4
-#define TUVRS_DISABLED 5
-
-/* TRACKBAR TICS states */
-#define TSS_NORMAL 1
-
-/* TRACKBAR TICSVERT states */
-#define TSVS_NORMAL 1
+BEGIN_TM_CLASS_PARTS(TRACKBAR)
+    TM_PART(1, TKP, TRACK)
+    TM_PART(2, TKP, TRACKVERT)
+    TM_PART(3, TKP, THUMB)
+    TM_PART(4, TKP, THUMBBOTTOM)
+    TM_PART(5, TKP, THUMBTOP)
+    TM_PART(6, TKP, THUMBVERT)
+    TM_PART(7, TKP, THUMBLEFT)
+    TM_PART(8, TKP, THUMBRIGHT)
+    TM_PART(9, TKP, TICS)
+    TM_PART(10, TKP, TICSVERT)
+END_TM_CLASS_PARTS()
+
+/* TRACKBAR states */
+BEGIN_TM_PART_STATES(TRACKBAR)
+    TM_STATE(1, TKS, NORMAL)
+END_TM_PART_STATES()
+
+/* TRACKBAR - TRACK states */
+BEGIN_TM_PART_STATES(TRACK)
+    TM_STATE(1, TRS, NORMAL)
+END_TM_PART_STATES()
+
+/* TRACKBAR - TRACKVERT states */
+BEGIN_TM_PART_STATES(TRACKVERT)
+    TM_STATE(1, TRVS, NORMAL)
+END_TM_PART_STATES()
+
+/* TRACKBAR - THUMB states */
+BEGIN_TM_PART_STATES(THUMB)
+    TM_STATE(1, TUS, NORMAL)
+    TM_STATE(2, TUS, HOT)
+    TM_STATE(3, TUS, PRESSED)
+    TM_STATE(4, TUS, FOCUSED)
+    TM_STATE(5, TUS, DISABLED)
+END_TM_PART_STATES()
+
+/* TRACKBAR - THUMBBOTTOM states */
+BEGIN_TM_PART_STATES(THUMBBOTTOM)
+    TM_STATE(1, TUBS, NORMAL)
+    TM_STATE(2, TUBS, HOT)
+    TM_STATE(3, TUBS, PRESSED)
+    TM_STATE(4, TUBS, FOCUSED)
+    TM_STATE(5, TUBS, DISABLED)
+END_TM_PART_STATES()
+
+/* TRACKBAR - THUMBTOP states */
+BEGIN_TM_PART_STATES(THUMBTOP)
+    TM_STATE(1, TUTS, NORMAL)
+    TM_STATE(2, TUTS, HOT)
+    TM_STATE(3, TUTS, PRESSED)
+    TM_STATE(4, TUTS, FOCUSED)
+    TM_STATE(5, TUTS, DISABLED)
+END_TM_PART_STATES()
+
+/* TRACKBAR - THUMBVERT states */
+BEGIN_TM_PART_STATES(THUMBVERT)
+    TM_STATE(1, TUVS, NORMAL)
+    TM_STATE(2, TUVS, HOT)
+    TM_STATE(3, TUVS, PRESSED)
+    TM_STATE(4, TUVS, FOCUSED)
+    TM_STATE(5, TUVS, DISABLED)
+END_TM_PART_STATES()
+
+/* TRACKBAR - THUMBLEFT states */
+BEGIN_TM_PART_STATES(THUMBLEFT)
+    TM_STATE(1, TUVLS, NORMAL)
+    TM_STATE(2, TUVLS, HOT)
+    TM_STATE(3, TUVLS, PRESSED)
+    TM_STATE(4, TUVLS, FOCUSED)
+    TM_STATE(5, TUVLS, DISABLED)
+END_TM_PART_STATES()
+
+/* TRACKBAR - THUMBRIGHT states */
+BEGIN_TM_PART_STATES(THUMBRIGHT)
+    TM_STATE(1, TUVRS, NORMAL)
+    TM_STATE(2, TUVRS, HOT)
+    TM_STATE(3, TUVRS, PRESSED)
+    TM_STATE(4, TUVRS, FOCUSED)
+    TM_STATE(5, TUVRS, DISABLED)
+END_TM_PART_STATES()
+
+/* TRACKBAR - TICS states */
+BEGIN_TM_PART_STATES(TICS)
+    TM_STATE(1, TSS, NORMAL)
+END_TM_PART_STATES()
+
+/* TRACKBAR - TICSVERT states */
+BEGIN_TM_PART_STATES(TICSVERT)
+    TM_STATE(1, TSVS, NORMAL)
+END_TM_PART_STATES()
 
 /* TRAYNOTIFY parts */
-#define TNP_BACKGROUND     1
-#define TNP_ANIMBACKGROUND 2
+BEGIN_TM_CLASS_PARTS(TRAYNOTIFY)
+    TM_PART(1, TNP, BACKGROUND)
+    TM_PART(2, TNP, ANIMBACKGROUND)
+END_TM_CLASS_PARTS()
 
 /* TREEVIEW parts */
-#define TVP_TREEITEM 1
-#define TVP_GLYPH    2
-#define TVP_BRANCH   3
-
-/* TREEVIEW TREEITEM states */
-#define TREIS_NORMAL           1
-#define TREIS_HOT              2
-#define TREIS_SELECTED         3
-#define TREIS_DISABLED         4
-#define TREIS_SELECTEDNOTFOCUS 5
-
-/* TREEVIEW GLYPH states */
-#define GLPS_CLOSED 1
-#define GLPS_OPENED 2
+BEGIN_TM_CLASS_PARTS(TREEVIEW)
+    TM_PART(1, TVP, TREEITEM)
+    TM_PART(2, TVP, GLYPH)
+    TM_PART(3, TVP, BRANCH)
+END_TM_CLASS_PARTS()
+
+/* TREEVIEW - TREEITEM states */
+BEGIN_TM_PART_STATES(TREEITEM)
+    TM_STATE(1, TREIS, NORMAL)
+    TM_STATE(2, TREIS, HOT)
+    TM_STATE(3, TREIS, SELECTED)
+    TM_STATE(4, TREIS, DISABLED)
+    TM_STATE(5, TREIS, SELECTEDNOTFOCUS)
+END_TM_PART_STATES()
+
+/* TREEVIEW - GLYPH states */
+BEGIN_TM_PART_STATES(GLYPH)
+    TM_STATE(1, GLPS, CLOSED)
+    TM_STATE(2, GLPS, OPENED)
+END_TM_PART_STATES()
 
 /* WINDOW parts */
-#define WP_CAPTION                        1
-#define WP_SMALLCAPTION                   2
-#define WP_MINCAPTION                     3
-#define WP_SMALLMINCAPTION                4
-#define WP_MAXCAPTION                     5
-#define WP_SMALLMAXCAPTION                6
-#define WP_FRAMELEFT                      7
-#define WP_FRAMERIGHT                     8
-#define WP_FRAMEBOTTOM                    9
-#define WP_SMALLFRAMELEFT                 10
-#define WP_SMALLFRAMERIGHT                11
-#define WP_SMALLFRAMEBOTTOM               12
-#define WP_SYSBUTTON                      13
-#define WP_MDISYSBUTTON                   14
-#define WP_MINBUTTON                      15
-#define WP_MDIMINBUTTON                   16
-#define WP_MAXBUTTON                      17
-#define WP_CLOSEBUTTON                    18
-#define WP_SMALLCLOSEBUTTON               19
-#define WP_MDICLOSEBUTTON                 20
-#define WP_RESTOREBUTTON                  21
-#define WP_MDIRESTOREBUTTON               22
-#define WP_HELPBUTTON                     23
-#define WP_MDIHELPBUTTON                  24
-#define WP_HORZSCROLL                     25
-#define WP_HORZTHUMB                      26
-#define WP_VERTSCROLL                     27
-#define WP_VERTTHUMB                      28
-#define WP_DIALOG                         29
-#define WP_CAPTIONSIZINGTEMPLATE          30
-#define WP_SMALLCAPTIONSIZINGTEMPLATE     31
-#define WP_FRAMELEFTSIZINGTEMPLATE        32
-#define WP_SMALLFRAMELEFTSIZINGTEMPLATE   33
-#define WP_FRAMERIGHTSIZINGTEMPLATE       34
-#define WP_SMALLFRAMERIGHTSIZINGTEMPLATE  35
-#define WP_FRAMEBOTTOMSIZINGTEMPLATE      36
-#define WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE 37
-
-/* WINDOW CAPTION / SMALLCAPTION state */
-#define CS_ACTIVE   1
-#define CS_INACTIVE 2
-#define CS_DISABLED 3
-
-/* WINDOW MINCAPTION / SMALLMINCAPTION state */
-#define MNCS_ACTIVE   1
-#define MNCS_INACTIVE 2
-#define MNCS_DISABLED 3
-
-/* WINDOW MAXCAPTION / SMALLMAXCAPTION state */
-#define MXCS_ACTIVE   1
-#define MXCS_INACTIVE 2
-#define MXCS_DISABLED 3
-
-/* WINDOW FRAME* / SMALLFRAME* state */
-#define FS_ACTIVE   1
-#define FS_INACTIVE 2
-
-/* WINDOW SYSBUTTON / MDISYSBUTTON state */
-#define SBS_NORMAL   1
-#define SBS_HOT      2
-#define SBS_PUSHED   3
-#define SBS_DISABLED 4
-
-/* WINDOW MINBUTTON / MDIMINBUTTON state */
-#define MINBS_NORMAL   1
-#define MINBS_HOT      2
-#define MINBS_PUSHED   3
-#define MINBS_DISABLED 4
-
-/* WINDOW MAXBUTTON state */
-#define MAXBS_NORMAL   1
-#define MAXBS_HOT      2
-#define MAXBS_PUSHED   3
-#define MAXBS_DISABLED 4
-
-/* WINDOW CLOSEBUTTON / SMALLCLOSEBUTTON / MDICLOSEBUTTON state */
-#define CBS_NORMAL   1
-#define CBS_HOT      2
-#define CBS_PUSHED   3
-#define CBS_DISABLED 4
-
-/* WINDOW RESTOREBUTTON / MDIRESTOREBUTTON state */
-#define RBS_NORMAL   1
-#define RBS_HOT      2
-#define RBS_PUSHED   3
-#define RBS_DISABLED 4
-
-/* WINDOW HELPBUTTON / MDIHELPBUTTON state */
-#define HBS_NORMAL   1
-#define HBS_HOT      2
-#define HBS_PUSHED   3
-#define HBS_DISABLED 4
-
-/* WINDOW HORZSCROLL state */
-#define HSS_NORMAL   1
-#define HSS_HOT      2
-#define HSS_PUSHED   3
-#define HSS_DISABLED 4
-
-/* WINDOW HORZTHUMB state */
-#define HTS_NORMAL   1
-#define HTS_HOT      2
-#define HTS_PUSHED   3
-#define HTS_DISABLED 4
-
-/* WINDOW VERTSCROLL state */
-#define VSS_NORMAL   1
-#define VSS_HOT      2
-#define VSS_PUSHED   3
-#define VSS_DISABLED 4
-
-/* WINDOW VERTTHUMB state */
-#define VTS_NORMAL   1
-#define VTS_HOT      2
-#define VTS_PUSHED   3
-#define VTS_DISABLED 4
+BEGIN_TM_CLASS_PARTS(WINDOW)
+    TM_PART(1, WP, CAPTION)
+    TM_PART(2, WP, SMALLCAPTION)
+    TM_PART(3, WP, MINCAPTION)
+    TM_PART(4, WP, SMALLMINCAPTION)
+    TM_PART(5, WP, MAXCAPTION)
+    TM_PART(6, WP, SMALLMAXCAPTION)
+    TM_PART(7, WP, FRAMELEFT)
+    TM_PART(8, WP, FRAMERIGHT)
+    TM_PART(9, WP, FRAMEBOTTOM)
+    TM_PART(10, WP, SMALLFRAMELEFT)
+    TM_PART(11, WP, SMALLFRAMERIGHT)
+    TM_PART(12, WP, SMALLFRAMEBOTTOM)
+    TM_PART(13, WP, SYSBUTTON)
+    TM_PART(14, WP, MDISYSBUTTON)
+    TM_PART(15, WP, MINBUTTON)
+    TM_PART(16, WP, MDIMINBUTTON)
+    TM_PART(17, WP, MAXBUTTON)
+    TM_PART(18, WP, CLOSEBUTTON)
+    TM_PART(19, WP, SMALLCLOSEBUTTON)
+    TM_PART(20, WP, MDICLOSEBUTTON)
+    TM_PART(21, WP, RESTOREBUTTON)
+    TM_PART(22, WP, MDIRESTOREBUTTON)
+    TM_PART(23, WP, HELPBUTTON)
+    TM_PART(24, WP, MDIHELPBUTTON)
+    TM_PART(25, WP, HORZSCROLL)
+    TM_PART(26, WP, HORZTHUMB)
+    TM_PART(27, WP, VERTSCROLL)
+    TM_PART(28, WP, VERTTHUMB)
+    TM_PART(29, WP, DIALOG)
+    TM_PART(30, WP, CAPTIONSIZINGTEMPLATE)
+    TM_PART(31, WP, SMALLCAPTIONSIZINGTEMPLATE)
+    TM_PART(32, WP, FRAMELEFTSIZINGTEMPLATE)
+    TM_PART(33, WP, SMALLFRAMELEFTSIZINGTEMPLATE)
+    TM_PART(34, WP, FRAMERIGHTSIZINGTEMPLATE)
+    TM_PART(35, WP, SMALLFRAMERIGHTSIZINGTEMPLATE)
+    TM_PART(36, WP, FRAMEBOTTOMSIZINGTEMPLATE)
+    TM_PART(37, WP, SMALLFRAMEBOTTOMSIZINGTEMPLATE)
+END_TM_CLASS_PARTS()
+
+/* WINDOW - CAPTION / SMALLCAPTION states */
+BEGIN_TM_PART_STATES(CAPTION)
+    TM_STATE(1, CS, ACTIVE)
+    TM_STATE(2, CS, INACTIVE)
+    TM_STATE(3, CS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - MINCAPTION / SMALLMINCAPTION states */
+BEGIN_TM_PART_STATES(MINCAPTION)
+    TM_STATE(1, MNCS, ACTIVE)
+    TM_STATE(2, MNCS, INACTIVE)
+    TM_STATE(3, MNCS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - MAXCAPTION / SMALLMAXCAPTION states */
+BEGIN_TM_PART_STATES(MAXCAPTION)
+    TM_STATE(1, MXCS, ACTIVE)
+    TM_STATE(2, MXCS, INACTIVE)
+    TM_STATE(3, MXCS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - FRAME* / SMALLFRAME* states */
+BEGIN_TM_PART_STATES(FRAME)
+    TM_STATE(1, FS, ACTIVE)
+    TM_STATE(2, FS, INACTIVE)
+END_TM_PART_STATES()
+
+/* WINDOW - SYSBUTTON / MDISYSBUTTON states */
+BEGIN_TM_PART_STATES(SYSBUTTON)
+    TM_STATE(1, SBS, NORMAL)
+    TM_STATE(2, SBS, HOT)
+    TM_STATE(3, SBS, PUSHED)
+    TM_STATE(4, SBS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - MINBUTTON / MDIMINBUTTON states */
+BEGIN_TM_PART_STATES(MINBUTTON)
+    TM_STATE(1, MINBS, NORMAL)
+    TM_STATE(2, MINBS, HOT)
+    TM_STATE(3, MINBS, PUSHED)
+    TM_STATE(4, MINBS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - MAXBUTTON states */
+BEGIN_TM_PART_STATES(MAXBUTTON)
+    TM_STATE(1, MAXBS, NORMAL)
+    TM_STATE(2, MAXBS, HOT)
+    TM_STATE(3, MAXBS, PUSHED)
+    TM_STATE(4, MAXBS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - CLOSEBUTTON / SMALLCLOSEBUTTON / MDICLOSEBUTTON states */
+BEGIN_TM_PART_STATES(CLOSEBUTTON)
+    TM_STATE(1, CBS, NORMAL)
+    TM_STATE(2, CBS, HOT)
+    TM_STATE(3, CBS, PUSHED)
+    TM_STATE(4, CBS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - RESTOREBUTTON / MDIRESTOREBUTTON states */
+BEGIN_TM_PART_STATES(RESTOREBUTTON)
+    TM_STATE(1, RBS, NORMAL)
+    TM_STATE(2, RBS, HOT)
+    TM_STATE(3, RBS, PUSHED)
+    TM_STATE(4, RBS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - HELPBUTTON / MDIHELPBUTTON states */
+BEGIN_TM_PART_STATES(HELPBUTTON)
+    TM_STATE(1, HBS, NORMAL)
+    TM_STATE(2, HBS, HOT)
+    TM_STATE(3, HBS, PUSHED)
+    TM_STATE(4, HBS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - HORZSCROLL states */
+BEGIN_TM_PART_STATES(HORZSCROLL)
+    TM_STATE(1, HSS, NORMAL)
+    TM_STATE(2, HSS, HOT)
+    TM_STATE(3, HSS, PUSHED)
+    TM_STATE(4, HSS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - HORZTHUMB states */
+BEGIN_TM_PART_STATES(HORZTHUMB)
+    TM_STATE(1, HTS, NORMAL)
+    TM_STATE(2, HTS, HOT)
+    TM_STATE(3, HTS, PUSHED)
+    TM_STATE(4, HTS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - VERTSCROLL states */
+BEGIN_TM_PART_STATES(VERTSCROLL)
+    TM_STATE(1, VSS, NORMAL)
+    TM_STATE(2, VSS, HOT)
+    TM_STATE(3, VSS, PUSHED)
+    TM_STATE(4, VSS, DISABLED)
+END_TM_PART_STATES()
+
+/* WINDOW - VERTTHUMB states */
+BEGIN_TM_PART_STATES(VERTTHUMB)
+    TM_STATE(1, VTS, NORMAL)
+    TM_STATE(2, VTS, HOT)
+    TM_STATE(3, VTS, PUSHED)
+    TM_STATE(4, VTS, DISABLED)
+END_TM_PART_STATES()
 
+END_TM_SCHEMA(ThemeMgrSchema)
 #endif


More information about the wine-patches mailing list