Трухильо Стэн
Шрифт:
В полноэкранном варианте класса DirectDrawWin функция OnCreate инициализирует DirectDraw за несколько этапов. Оконный вариант выглядит проще, потому что ему не приходится перечислять драйверы DirectDraw или видеорежимы. Оконная версия функции OnCreate выглядит так:
Сначала указатель на интерфейс DirectDraw(ddraw1) инициализируется функцией DirectDrawCreate. Указатель ddraw1, как и в полноэкранной версии, используется только для получения указателя на интерфейс DirectDraw2, после чего освобождается.
Затем функция OnCreate вызывает функцию SetCooperativeLevel. В полноэкранном приложении уровень кооперации определялся тремя флагами: DDSCL_EXCLUSIVE, DDSCL_FULLSCREEN и DDSCL_ALLOWMODEX. В данном случае используется только флаг DDSCL_NORMAL.
Функция DetectDisplayMode инициализирует некоторые переменные класса DirectDrawWin. Она выглядит так:
Функция DetectDisplayMode с помощью функции GetDisplayMode интерфейса DirectDraw получает информацию о текущем видеорежиме Windows. Говоря точнее, разрешение экрана и глубина пикселей текущего видеорежима сохраняются в переменных displayrect и displaydepth.
Далее OnCreate вызывает функцию CreateFlippingSurfaces. Хотя оконное приложение не может выполнять настоящего переключения страниц (как можно было бы решить, исходя из имени функции), имя было сохранено, потому что создаваемые в ней поверхности эмулируют переключение страниц. Код функции приведен в листинге 3.4.
Листинг 3.4. Функция CreateFlippingSurfaces в оконном приложении