Регистрация специализированных и стандартных шаблонов

Чтобы сократить используемое место и улучшить безопасность, интерфейсы .X позволяют вам убрать все объявления шаблонов из .X файлов и вставить их в исполняемый модуль. Это означает, что вместо того, чтобы определять шаблоны в .X файлах, необходимо определять их в программе. Не волнуйтесь - это не настолько сложно, насколько звучит. Как вы увидите чуть позже, Microsoft взяла на себя всю тяжелую работу, определив стандартные шаблоны в нескольких заголовочных файлах, упростив все насколько это возможно.

Чтобы зарегистрировать стандартный шаблон (или любой другой) в вашей программе, вам необходимо вызвать функцию IDirectXFile::RegisterTemplates.

HRESULT IDirectXFile::RegisterTemplates(

LPVOID pvData, // буфер содержащий определение шаблона DWORD cbSize) ; // количество байт информации

Параметр pvData является просто буфером данных, который содержит определение шаблона в таком же формате, как вы видели в .X файле. Например, вы можете определить буфер шаблона так:

char *TeMplates = "

"xof 0303txt 0032 \ template CustoMTemplate { \

<4c944 580-9e9a-11cf-ab43-012 0af71e43 3> \

DWORD Length; \

array DWORD Values[Length] ; \

Возвращаясь к функции RegisterTemplates, нужно сказать, что параметр cbSize представляет собой размер буфера данных шаблона, который в настотящем случае вы определяете, используя функцию strlen буфера "Templates". Соединив,

вы можете зарегистрировать шаблон, определенный в буфере "Templates", используя следующий код:

pFile->RegisterTemplates(Templates , strlen(Templates));

Вернемся к самой теме - регистрирование стандартных шаблонов. Вы видели, как работает функция RegisterTemplates. Для того чтобы зарегистрировать стандартные шаблоны, вам необходимо включить два добавочных файла в ваш проект -"rmxftmpl.h" и "rmxfguid.h". Эти два файла содержат определения и GUID стандартных шаблонов соответственно.

Внутри файла "rmxftmpl.h" вы найдете буфер данных шаблона D3DRMX-TEMPLATES и макрос D3DRM_XTEMPLATE_BYTES. Они используются при вызове RegisterTemplates для регистрирования стандартных шаблонов, как вы можете видеть здесь:

pFile->RegisterTemplates(D3DRM_XTEMPLATES, \

D3DRM_XT.EMPLAT.E_BYT.ES) ;

Правильно, просто вызвав приведенный выше кусочек кода, вы успешно зарегистрируете стандартные шаблоны, и вы готовы продолжать! Но сначала небольшой совет: как только вы начнете использовать формат .X для ваших специализированных данных и шаблонов, не забывайте, что RegisterTemplates отлично регистрирует и ваши шаблоны!

Замечание. Отметьте, что в определении шаблона "Templates" используется наклонная черта влево для обозначения новой линии, и после этого следует стандартный заголовок .X файла.

Совет. Для того, чтобы запомнить "rmxftmpl.h" и "rmxfguid.h", просто помните, что "rmxf "это .Xфайл сохраненного режима, "tmpl" означает шаблон и "guid" означает глобальноуникальный идентификатор.

Доступ к .X файлам || Оглавление || Открытие .X файла