Я предполагаю, что вы используете C ++ для моих ответов, но если вы можете позволить себе использовать C #, 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]
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