ПРОГРАМИРУЕМ 3D ГРАФИКУ ИСПОЛЬЗУЯ DirectX



Расставляем декорации - часть 3


Подготовка завершена. Нам еще предстоит добавить в наше приложение довольно много программного кода перед тем, как его можно будет откомпилировать и построить, однако делать это придется уже без помощи AppWizard. На Рисунок 2-1 показана структура приложения Stage.

34 1У Глава 2. Расставляем декорации

Рисунок. 2-1. Структура приложения


Блок с пометкой Механизм визуализации Direct3D чем-то напоминает Рим — все дороги ведут к нему. Мы рассмотрим каждый из этих блоков, когда будем описывать процесс взаимодействия классов семейства C3d с механизмом визуализации Direct3D.

Отображение главного окна

Далее необходимо изменить инициализирующий код приложения, чтобы обеспечить создание главного окна. Для этого следует отредактировать функцию CStage::lnitlnstance в файле Stage.cpp. Когда AppWizard строит базовое приложение SDI, он включает в функцию Initlnstance код для создания пустого документа, который, в свою очередь, создает главное окно. Поскольку мы удалили код, относящийся к документу, придется строить главное окно самостоятельно. Новая версия функции Initlnstance выглядит следующим образом:

BOOL CStageApp::Initlnstance()

{

// Стандартная инициализация

// Если вы не используете какие-либо возможности и желаете // сократить размер итогового выполняемого файла, следует // вручную удалить ненужные процедуры инициализации.

#ifdef _AFXDLL

Enable3dControls(); // Вызывается при использовании MFC //в виде совместной DLL-библиотеки

#else

Enable3dControlsStatic(); // Вызывается при статической

// компоновке MFC ttendif

LoadStdProfileSettings();// Загрузить стандартные параметры

// из INI-файла (включая MRU) // Загрузить главное обрамленное окно CMainFrame* pFrame = new CMainFrame;

if (!pFrame->LoadFrame(IDR_MAINFRAME,

35

Отображение главного окна

WSJ3VERLAPPEDWINDOW WS VISIBLE)) {

return FALSE;

}

// Сохранить указатель на главное окно

m pMainWnd = pFrame;

return TRUE;

}

Обратите внимание на два важных действия: вызов функции LoadFrame для загрузки и отображения обрамленного окна и сохранение указателя на него в переменной m_pMainWnd. Указатель сохраняется для того, чтобы классы MFC могли передавать сообщения главному окну приложения, тем самым обеспечивая его правильную работу. Кроме того, необходимо отредактировать файл MainFrm.h и объявить конструктор CMainFrame открытым (public) — по умолчанию он является защищенным (protected). Заодно включите в перечень открытых членов CMainFrame объявление переменной C3dWnd m_wnd3d.




Содержание  Назад  Вперед