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 руб./мес


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




 193 - Попробуем DirectDraw / MFC шаг за шагом / Visual C++

Шаг 193 - Попробуем DirectDraw

Мы сейчас просто посмотрим как можно инициализировать режимы DirectDraw для работы. DirectDraw - это часть DirectX.

DirectX API
	DirectDraw - прямой доступ к видеопамяти 
	DirectSound - прямой доступ к звуковой карте 
	DirectPlay - прямой доступ к сетевым возможностям 
		для обеспечения multiplayer mode 
	DirectInput - поддержка игровых устройств ввода 

DirectDraw обеспечивает прямой доступ к видеопамяти. Реализован DirectDraw в виде COM объектов.

Давайте создадим простое приложение с помощью AppWizard, как SDI с именем допустим TestDraw. Задача простая по выбору пункта меню инициализировать DirectDraw. Поэтому создайте пункт меню DirectDraw скажем в View и свяжите этот пункт меню с функцией

void CMainFrame::OnViewDirectdraw() 
{
	// TODO: Add your command handler code here
	
}

Итак, пора инициализировать. Для начала надо подключить заголовочный файл с описаниями функций

......
#include "TestDraw.h"

#include "MainFrm.h"
#include "ddraw.h"
......

Вот теперь нам нужно получить указатель на основной объект DirectDraw давайте это сделаем.

void CMainFrame::OnViewDirectdraw() 
{
LPDIRECTDRAW lpDD; 
HRESULT hdr;
hdr = DirectDrawCreate( NULL, &lpDD, NULL );
if( hdr != DD_OK )
{    
 AfxMessageBox("Not Direct Create");
}
}

Мы создаем объект DirectDrawCreate. Но вот если сейчас скомпилировать то вы получите ошибку сборки. Конечно нужен LIB файл !!!. Нужно так нужно, как говорится в одной из реклам. Вот он ddraw.lib, вы должны поместить его в Project Setting.

Теперь мы можем включить режим доступа к монитору

hdr = lpDD->SetCooperativeLevel( m_hWnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN );
if( hdr != DD_OK )
{
	AfxMessageBox("SetCooperativeLevel");
}

Ну теперь пора установить режим вывода на экран.

hdr = lpDD->SetDisplayMode( 800, 600, 8);
if( hdr != DD_OK )
{
	AfxMessageBox("Error SetDisplayMode");
}

При этом происходит физическое переключение, как я понимаю. Мой монитор гаснет, шелкает, и переходит в данный режим. Кстати если Вы обратили внимание, то я установил эксклюзивный режим и поэтому можно работать только с этой программой.

Конечно я понимаю, что это мало рассказанно про DirectDraw. Просто его инициализация и о данной теме стоит рассказывать отдельно.


| |
Автор Каев Артем.
[AD]