Надеюсь Вы читали шаги по MFC и немножко ориентируетесь в нем. Возьмем за основу проект "Шаг 1 - Минимальный проект" из раздела MFC, все сделайте, как там рассказано. Теперь смотрим "Шаг 2 - Вставка элемента управления в окно (Controls)" и делаем.
Инициализируем глобально библиотеки и указатели:
#include "afxwin.h" // MFC Основные и стандартные компоненты #define APPNAME "http://www.firststeps.ru Первые Шаги Урок 9 - Создаем Direct3D при помощи MFC" #include <d3d8.h> #pragma comment (lib, "d3d8.lib") LPDIRECT3D8 p_d3d = NULL; // наш главный интерфейс d3d8LPDIRECT3DDEVICE8 p_d3d_Device = NULL; // наше устройство d3d8
Строка #include "afxwin.h" должна быть подключена перед #include <d3d8.h>, ОБЯЗАТЕЛЬНО.
Переходим в CMainWnd::CMainWnd() и после функции Create - создания окна, добавляем:
p_d3d = Direct3DCreate8 (D3D_SDK_VERSION); D3DDISPLAYMODE d3ddm; p_d3d->GetAdapterDisplayMode (D3DADAPTER_DEFAULT, &d3ddm); D3DPRESENT_PARAMETERS d3dpp; ZeroMemory (&d3dpp, sizeof(d3dpp)); d3dpp.Windowed = true; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferFormat = d3ddm.Format; p_d3d->CreateDevice (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &p_d3d_Device);
Скомпонуйте, запустите. И не тут то было, приложение не хочет компилироваться ссылаясь, что не определен идентификатор hWnd. Исправим. Для начала нам нужно знать, где этот HWND (дескриптор родительского окна) находится. Заходим в меню View->Class View:
В появившемся окне Class View, если он у Вас не был до этого активирован, раскройте дерево (ветку) CMainWnd:
Далее CFrameWnd, т.к. CMainWnd является прямым наследником CFrameWnd, раскрываем снова его родителя CWnd:
И находим m_hWnd, вот его нам и нужно вписать.
Еще проще найти, это нажать правую кнопку мышки в окне редактирования кода, скажем в классе CMainWnd или в одной из его функций, выбрать List Members:
Появится список всех доступных значений для данного класса и найдите m_hWnd.
Бежим в наш код и прописываем:
p_d3d->CreateDevice (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, m_hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &p_d3d_Device);
Компилируем и запускаем. Ура!!! Заработало!!!