Ответ 1
Предполагаю, что вы используете С++ для моих ответов, но если вы можете позволить себе использовать С#, XNA (http://creators.xna.com/) - отличная игровая платформа, которая обрабатывает все эти проблемы для вас.
1]
Эта статья полезна для событий Windows в процедуре окна, чтобы обнаружить, когда окно теряет или получает фокус, вы можете справиться с этим в своем главном окне: http://www.functionx.com/win32/Lesson05.htm. Кроме того, посмотрите сообщение WM_ACTIVATEAPP здесь: http://msdn.microsoft.com/en-us/library/ms632614(VS.85).aspx
2]
-
Графическое устройство теряется, когда приложение теряет фокус из полноэкранного режима. Microsoft предлагает статью о том, как с этим справиться: http://msdn.microsoft.com/en-us/library/bb174717(VS.85).aspx В этой статье также есть утерянный урок устройства: <а4 >
-
DirectInput также может иметь состояние с потерянным устройством, вот ссылка на это: http://www.toymaker.info/Games/html/directinput.html
-
DirectSound также может иметь состояние с ошибкой устройства, в этой статье есть код, который обрабатывает: http://www.eastcoastgames.com/directx/chapter2.html
3]
Я бы никогда не отключил Alt-Tab. Вероятно, вам нужна минимальная загрузка процессора, в то время как приложение неактивно, потому что пользователь, вероятно, Alt-Tabbed, потому что хочет сделать что-то еще, так что вы можете полностью приостановить приложение или уменьшить количество кадров в секунду. Если приложение минимально, вам, конечно же, ничего не нужно делать. Подумав о сетевой игре, мое лучшее решение заключается в том, что вы должны уменьшить количество кадров в секунду, а также количество обработанных сетевых пакетов, возможно, даже выбросив многие из пакетов, которые появляются до тех пор, пока игра не будет повторно активирована.
4]
Честно говоря, я бы просто придерживался DirectX 9.0c (или DirectX 10, если вы хотите ограничить свою целевую операционную систему Vista и новее), если это вообще возможно:)
Наконец, DirectX sdk имеет множество обучающих программ и примеров: http://www.microsoft.com/downloads/details.aspx?FamilyID=24a541d6-0486-4453-8641-1eee9e21b282&displaylang=en