Шаг 19 - Full Screen + MFC

Попробуем теперь сделать полноэкранное приложение.

Для упрощения жизни возьмем пример из шага 16, там где мы рисовали 5 точек. Как вы помните для установки полноэкранного режима необходимо заполнить некоторые поля структуры DEVMODE. Сделаем эти установки в функции PreCreateWindow класса CMainFrame:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	cs.x = cs.y = 0;
	cs.cx = GetSystemMetrics(SM_CXSCREEN);
	cs.cy = GetSystemMetrics(SM_CYSCREEN);
	cs.style = WS_POPUP;
	cs.hMenu = NULL;

	DEVMODE dmScreenSettings;

	memset(&dmScreenSettings, 0, sizeof(DEVMODE));
	dmScreenSettings.dmSize			= sizeof(DEVMODE);
	dmScreenSettings.dmPelsWidth	= GetSystemMetrics(SM_CXSCREEN);
	dmScreenSettings.dmPelsHeight	= GetSystemMetrics(SM_CYSCREEN);
	dmScreenSettings.dmFields		= DM_PELSWIDTH | DM_PELSHEIGHT;
	ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN);

	return TRUE;
}

Практически все здесь взято из полноэкраного примера на Win32 API.

В функцию OnClose того же класса добавим стоку, восстанавливающую все настройки:

void CMainFrame::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
	ChangeDisplaySettings(NULL, 0);
	
	CFrameWnd::OnClose();
}

Вот и все. Соберите этот проект. Выйти из програмки можно нажав Alt+F4. При желании можно добавить сюда выход по нажанию какой-нибудь другой клавиши.

Шпаргалка

  1. Создать проект из шага 16.
  2. Сделать изменения в CMainFrame::PreCreateWindow.
  3. Добавить обработчик WM_CLOSE в классе CMainFrame и восстанавливать все установки по умолчанию.
  4. При желании добавить еще что-нибудь.

Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Kirill V. Ratkin - 23.05.2000