//----------------------------------------------------------------- // SchemaDef.h - defines needed to build a Theme Manager schema // file //----------------------------------------------------------------- #ifndef SCHEMA_STRINGS // FIRST PASS of this hdr file //----------------------------------------------------------------- #ifndef SCHEMADEF_H #define SCHEMADEF_H //----------------------------------------------------------------- #define SCHEMADEF_VERSION 1 // defines the exported func(s) implemented //----------------------------------------------------------------- struct TMPROPINFO { LPCWSTR pszName; SHORT sEnumVal; BYTE bPrimVal; }; //----------------------------------------------------------------- struct TMSCHEMAINFO { DWORD dwSize; // size of this struct int iSchemaDefVersion; // version number from this file int iThemeMgrVersion; // version number from "thschema.h" int iPropCount; // # of entries in prop table const struct TMPROPINFO *pPropTable; // ptr to prop table }; //--------------------------------------------------------------------------- #define BEGIN_TM_SCHEMA(name) #define BEGIN_TM_PROPS() enum PropValues { DummyProp = 49, #define BEGIN_TM_ENUM(name) enum name { #define BEGIN_TM_CLASS_PARTS(name) enum name##PARTS { name##PartFiller0, #define BEGIN_TM_PART_STATES(name) enum name##STATES { name##StateFiller0, #define TM_PROP(val, prefix, name, primval) prefix##_##name = val, #define TM_ENUM(val, prefix, name) prefix##_##name = val, #define TM_PART(val, prefix, name) prefix##_##name = val, #define TM_STATE(val, prefix, name) prefix##_##name = val, #define END_TM_CLASS_PARTS() }; #define END_TM_PART_STATES() }; #define END_TM_PROPS() }; #define END_TM_ENUM() }; #define END_TM_SCHEMA(name) //--------------------------------------------------------------------------- #endif // SCHEMADEF_H //--------------------------------------------------------------------------- #else // SECOND PASS of this hdr file //--------------------------------------------------------------------------- #undef BEGIN_TM_SCHEMA #undef BEGIN_TM_PROPS #undef BEGIN_TM_ENUM #undef BEGIN_TM_CLASS_PARTS #undef BEGIN_TM_PART_STATES #undef TM_PROP #undef TM_PART #undef TM_STATE #undef TM_ENUM #undef END_TM_CLASS_PARTS #undef END_TM_PART_STATES #undef END_TM_PROPS #undef END_TM_ENUM #undef END_TM_SCHEMA //--------------------------------------------------------------------------- #define BEGIN_TM_SCHEMA(name) static const TMPROPINFO name[] = { #define BEGIN_TM_PROPS() #define BEGIN_TM_ENUM(name) {L#name, TMT_ENUMDEF, TMT_ENUMDEF}, #define BEGIN_TM_CLASS_PARTS(name) {L#name L"PARTS", TMT_ENUMDEF, TMT_ENUMDEF}, #define BEGIN_TM_PART_STATES(name) {L#name L"STATES", TMT_ENUMDEF, TMT_ENUMDEF}, #define TM_PROP(val, prefix, name, primval) {L#name, prefix##_##name, TMT_##primval}, #define TM_PART(val, prefix, name) {L#name, prefix##_##name, TMT_ENUMVAL}, #define TM_STATE(val, prefix, name) {L#name, prefix##_##name, TMT_ENUMVAL}, #define TM_ENUM(val, prefix, name) {L#name, prefix##_##name, TMT_ENUMVAL}, #define END_TM_CLASS_PARTS() #define END_TM_PART_STATES() #define END_TM_PROPS() #define END_TM_ENUM() #define END_TM_SCHEMA(name) }; \ static const TMSCHEMAINFO *GetSchemaInfo() \ { \ static TMSCHEMAINFO si = {sizeof(si)}; \ si.iSchemaDefVersion = SCHEMADEF_VERSION; \ si.iThemeMgrVersion = THEMEMGR_VERSION; \ si.iPropCount = sizeof(name)/sizeof(name[0]); \ si.pPropTable = name; \ \ return &si; \ } //----------------------------------------------------------------- #endif //-----------------------------------------------------------------