Попробуем теперь сделать полноэкранное приложение.
Для упрощения жизни возьмем пример из шага 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. При желании можно добавить сюда выход по нажанию какой-нибудь другой клавиши.