//----------------------------------------------------------------- // 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 //----------------------------------------------------------------- # include "Common/Base/Diagnostic/XTPDisableNoisyWarnings.h" 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) # include "Common/Base/Diagnostic/XTPEnableNoisyWarnings.h" //--------------------------------------------------------------------------- # 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* AFX_CDECL 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 //-----------------------------------------------------------------