После того как вы создали интерфейс IDirectXFile и зарегистрировали используемые шаблоны, вам необходимо открыть .X файл и начать просмотр содержащихся в нем объектов. Процессы открытия .X файла и создания объекта просмотра объединены в один, соответствующий вызову функции IDirectXFile::CreateEnumObject.
HRESULT IDirectXfile::CreateEnumObject( LPVOID pvSource, // имя .Х файла
DXFILELOADOPTIONSdwLoadOptions,//параметры загрузки LPDIRECTXFILEENUMOBJECT* ppEnumObj}; // интерфейс перечисления
Когда вы вызываете функцию CreateEnumObject, укажите ей в качестве параметра pvSource имя загружаемого .X файла, а в качестве ppEnumObj используемый интерфейс. Что же касается dwLoadOptions, вы должны задать значение DXFILELOAD-_FROMFILE, которое сообщает DirectX, что файл загружается с диска. Другие возможные значения dwLoadOptions это DXFILELOADFROMRESOURCE, DXFILE-LOADFROMMEMORY и DXFILELOADFROMURL. Эти значения говорят DirectX загружать файл из ресурсов, буфера памяти или сетевого адреса соответственно. Да, так и есть - вы можете загружать .X файл прямо из Интернета.
Совет. Для загрузки .Xфайла из Интернета, используя адрес, задайте полный сетевой путь в "pvSource". Для загрузки из ресурса или памяти просто укажите дескриптор ресурса или указатель памяти (оба преобразуются к LPVOID) вpvSource.
Продолжим пример и создадим объект перечисления для .Х файла. Следующийкод создает объект перечисления, используемый для анализа дискового файла.
// Filename = имя загружаемого файла (например "test.x") IDirectXFileEnumObject *pEnum; pFile->CreateEnumObject((LPVOID)Filename, \ DXFILELOAD_FROMFILE, &pEnum) ;
Из комментариев кода видно, что "Filename" указывает на правильное имя файла - в данном случае "test.x". После успешного вызова функция CreateEnumObject возвращает вам правильный объект перечисления (необходим один на один открытый файл), готовый к перечислению объектов находящихся в файле.
⇐Регистрация специализированных и стандартных шаблонов || Оглавление || Перечисление объектов данных⇒