Шаг 11 - Добавляем событие OnPaint, LButtonDbl и устанавливаем полноэкранный режим средствами MFC

Перейдем к конструктору CMainWnd при помощи Class View. Нажмем Properties (Свойства), если его у Вас нет нажмите клавишу F4. Посмотрите сначала, что выбран соответствующий класс (1), затем щелкните на Messages (Сообщения) (2), найдите при помощи прокрутки WM_PAINT и щелкните на выпадающий список (3), выберите OnPaint.

11_1.gif (4611 b)

Более подробно о назначении этого сообщения смотрите раздел MFC: "Шаг 10 - Рисуем в окне". Тем самым мы добавили сообщение к классу CMainWnd. Отредактируем его:

void CMainWnd::OnPaint()
{
	SetCursor(NULL);

	p_d3d_Device->Clear (0, NULL, D3DCLEAR_TARGET,
	D3DCOLOR_XRGB (color++, 0, 0), 0.0f, 0);

	p_d3d_Device->BeginScene ();
	p_d3d_Device->EndScene ();

	p_d3d_Device->Present (NULL, NULL, NULL, NULL);
}

В класс CMainWnd в public объявите переменную:

int color;

Запускаем. Получили тоже самое, что и "Шаг 3 - События рамки окна", но средствами MFC. Сделаем полноэкранный режим. Для этого откроем конструктор класса CMainWnd:

CMainWnd::CMainWnd()
{ 
	Create(NULL, APPNAME,	// Создать окно программы
		WS_POPUP,
		rectDefault, NULL,NULL);

И укажем в ней WS_POPUP. Также перенесем объявление

D3DDISPLAYMODE d3ddm;

в класс окна CMainWnd в область private. В конструктор данного класса добавим строки после ZeroMemory:

d3dpp.BackBufferWidth = 1024;
d3dpp.BackBufferHeight = 768;
d3dpp.BackBufferCount = 3;
d3dpp.FullScreen_RefreshRateInHz = d3ddm.RefreshRate;

Далее ставим false:

d3dpp.Windowed = false;

и

d3dpp.BackBufferFormat = d3ddm.Format;

Добавим сообщение на двойной клик мышкой на закрытие окна, иначе нам не выйти из него... Выбираем теперь не WM_PAINT, а:

И переходим к редактированию:

void CMainWnd::OnLButtonDblClk(UINT nFlags, CPoint point)
{
	DestroyWindow();	// Уничтожить окно 
}

Запускаем и смотрим. Для выхода щелкните два раза на левую кнопку мышки.


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Хавов Евгений Валерьевич - 10.08.2002