Лучший метод для минимизируемого полноэкранного окна - PullRequest
2 голосов
/ 28 марта 2010

Я пишу короткую игру на C ++ и Win32 и хочу, чтобы она была в полноэкранном режиме с фиксированным размером. Я также хочу, чтобы пользователь мог переключать фокус между окном игры и другими окнами настолько, насколько он / она хочет, без каких-либо странных сбоев экрана.

До сих пор я знал о функции ChangeDisplaySettings и создании окна со стилем WS_POPUP при инициализации, чтобы сделать его полноэкранным. Чтобы обнаружить, что пользователь переключает фокус на другие окна с помощью alt + tab или иным образом, какие сообщения я должен обрабатывать в WndProc окна или использовать другую функцию? Когда обнаружена потеря фокуса, я должен только вызвать ChangeDisplaySettings(NULL, 0); или есть другие функции, которые я должен также вызвать? И какой метод я должен использовать для обработки фокуса обратно в окно?

Также кто-нибудь может дать мне некоторую информацию о том, как заставить его работать плавно для разных размеров экрана?

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 31 марта 2010

Вы также можете использовать библиотеку GDI + Windows XP (и новее), чтобы использовать растягивание с аппаратным ускорением (отрисовка в 640x480, пусть GDI + изменяет размер до исходного разрешения). Тогда вам не нужен эксклюзивный режим DirectDraw или ChangeDisplaySettings.

Также может быть выполнено эффективное рисование в большом фоновом буфере 640x480 и растрескивание его по поверхности рисования с помощью StretchBlt.

0 голосов
/ 29 марта 2010

Если вы хотите эксклюзивное полноэкранное окно, используйте DirectX.

Но я не рекомендую это. Изменение режима отображения вызывает сбои, переупорядочивает значки пользователей и так далее. Сделано ли вами, или Direct X.

Скорее создайте обычное окно в своем родном разрешении и позвольте пользователю развернуть его, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...