C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 9 - Создаем Direct3D при помощи MFC / Direct3D / Microsoft DirectX

Шаг 9 - Создаем Direct3D при помощи MFC

Надеюсь Вы читали шаги по MFC и немножко ориентируетесь в нем. Возьмем за основу проект "Шаг 1 - Минимальный проект" из раздела MFC, все сделайте, как там рассказано. Теперь смотрим "Шаг 2 - Создание Direct3D в оконном режиме" и делаем.

Инициализируем глобально библиотеки и указатели:

#include "afxwin.h"	// MFC Основные и стандартные компоненты
#define APPNAME "http://www.mysite.int Первые Шаги Урок 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:

9_1.gif (2188 b)

В появившемся окне Class View, если он у Вас не был до этого активирован, раскройте дерево (ветку) CMainWnd:

9_2.gif (1929 b)

Далее CFrameWnd, т.к. CMainWnd является прямым наследником CFrameWnd, раскрываем снова его родителя CWnd:

9_3.gif (1718 b)

И находим m_hWnd, вот его нам и нужно вписать.

Еще проще найти, это нажать правую кнопку мышки в окне редактирования кода, скажем в классе CMainWnd или в одной из его функций, выбрать List Members:

9_4.gif (1121 b)

Появится список всех доступных значений для данного класса и найдите m_hWnd.

9_5.gif (1671 b)

Бежим в наш код и прописываем:

p_d3d->CreateDevice (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, m_hWnd, 
	D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &p_d3d_Device);

Компилируем и запускаем. Ура!!! Заработало!!!

9_6.gif (4176 b)


Загрузить проект | | |
Автор Хавов Евгений Валерьевич.
[AD]