понедельник, 3 августа 2009 г.

Полноэкранный режим

Динамичные компьютерные игры используют пространство экрана по максимуму. Не отстают от них и скринсейверы. Организация полноэкранного отображения имеет свои особенности, но отнюдь не так сложна, как может показаться программисту, привыкшему, что Delphi или Visual Basic сами создают готовые к употреблению окошки.
Жидкокристаллические мониторы, в отличие от своих ЭЛТ собратьев, имеют «родное» разрешение экрана, обусловленное параметрами используемой матрицы. Обычно именно это разрешение и установлено по умолчанию. Чтобы использовать его параметры и в полноэкранном режиме, нужно получить контекст устройства для экрана:
HDC ScreenDC = GetDC(NULL);
Для него узнать ширину и высоту экрана в пикселах, а глубину цвета - в битах на пиксел:
int hr = GetDeviceCaps(ScreenDC, HORZRES );
int vr = GetDeviceCaps(ScreenDC, VERTRES );
int bp = GetDeviceCaps(ScreenDC, BITSPIXEL);
Эти параметры нужно поместить в структуру:
DEVMODE dmScrMode;
dmScrMode.dmPelsWidth = hr;
dmScrMode.dmPelsHeight = vr;
dmScrMode.dmBitsPerPel = bp;
Структуру передать в фунцию, которая должна установить полноэкранный режим:
LONG rezult = ChangeDisplaySettings(&dmScrMode, CDS_FULLSCREEN);
И обработать ситуацию, когда ей это не удалось:
if(rezult != DISP_CHANGE_SUCCESSFUL)
{
...
}

Вывод: чтобы переключиться в полноэкранный режим, не обязательно менять разрешение экрана.

Комментариев нет:

Отправить комментарий

Можете оставить комментарий: