Windows 编程概述
本文对windows编程中涉及的一些基本概念作一个简单的概述。
事件驱动
Windows 应用程序基于事件驱动模型,windows应用程序启动后会一直等待事件的发生。
常见的事件包括,键盘某个按键被按下,鼠标单击,窗口按钮被点击,窗口可见,等等。
消息与消息队列
Windows 操作系统使用消息来通知应用程序事件的发生。当一个事件发生时,windows 会为该事件所对应的应用程序发送一条消息,然后,这条消息就被加入到应用程序的消息队列中。
每个应用程序都有属于自己的消息队列,消息队列包含了windows操作系统向该应用程序发送的所有消息。
消息循环
应用程序在一个消息循环里面不断地检查消息队列,如果消息队列里面存在消息,则将其取出来,并交由对应的窗口过程处理。
消息循环的代码如下所示:
1 | while(::GetMessage(&msg, 0, 0, 0)) { |
窗口过程
窗口过程实质是一个函数,用于处理消息队列中的消息。
每个窗口对应一个窗口过程(在创建窗口时指定窗口对应的窗口过程),但一个窗口过程可能对应于多个窗口,即多个窗口共用一个窗口过程。
一个窗口过程中可能包含的消息处理代码如下:
1 | case WM_KEYDOWN: |