窗口和消息

Microsoft 游戏开发工具包(GDK)使用 Win32 编程样式,包括窗口和消息。 尽管大部分内容与你在 Windows 电脑上可能遇到的情况相同,但本主题介绍了主机支持的功能以及与 Windows 电脑的区别。

创建主窗口

每个游戏必须有一个 WinMain 作为入口点函数。 在 WinMain 内,游戏应该执行以下操作。

  1. 注册窗口类。
  2. 指定窗口过程。
  3. 创建窗口。
  4. 抽取消息循环。

在主机上,窗口就好像消息的目标。

主机上支持的窗口消息

在主机上,支持来自键盘和鼠标的基本输入和窗口生命周期。 支持以下系统消息:

  • WM_ACTIVATE
  • WM_ACTIVATEAPP
  • WM_CHAR
  • WM_CREATE
  • WM_DESTROY
  • WM_DPICHANGED
  • WM_KEYDOWN
  • WM_KEYUP
  • WM_KILLFOCUS
  • WM_LBUTTONDOWN
  • WM_LBUTTONUP
  • WM_MBUTTONDOWN
  • WM_MBUTTONUP
  • WM_MOUSEMOVE
  • WM_MOUSEWHEEL
  • WM_QUIT
  • WM_RBUTTONDOWN
  • WM_RBUTTONUP
  • WM_SETFOCUS
  • WM_SHOWWINDOW
  • WM_SIZE
  • WM_SYSKEYDOWN
  • WM_SYSKEYUP
  • WM_THEMECHANGED
  • WM_TIMER
  • WM_USER
  • WM_XBUTTONDOWN
  • WM_XBUTTONUP

主机上支持的 WinUser 函数

主机仅支持 winuser.h 的一个子集。 主机仅支持以下窗口函数。

  • AdjustWindowRect
  • AdjustWindowRectEx
  • CallWindowProc
  • CreateWindowEx
  • DefWindowProc
  • DestroyCursor
  • DestroyWindow
  • DispatchMessage
  • GetClientRect
  • GetCursorInfo
  • GetCursorPos
  • GetMessage
  • GetWindowLong
  • GetWindowLongPtr
  • KillTimer
  • LoadCursor
  • MoveWindow
  • PeekMessage
  • PostMessage
  • PostQuitMessage
  • PostThreadMessage
  • RegisterClass
  • RegisterClassEx
  • SendMessage
  • SetCursor
  • SetTimer
  • SetWindowLong
  • SetWindowLongPtr
  • SetWindowPos
  • ShowCursor
  • ShowWindow
  • TranslateMessage
  • UnregisterClass