马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
知识点回顾:
1. 窗口的诞生
备注:当调用完 CreateWindow 函数的时候,应用程序实例以及相应的消息队列已经诞生了。
2. Windows 是一个事件驱动,基于消息的操作系统
用户的任何操作都被看作一个事件,操作系统会自动将该事件转换为相应的消息并投入该应用程序的消息队列等待处理。
3. 消息机制
应用程序的消息机制主要由消息循环来处理:
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
GetMessage 函数从应用程序的队列里取出一个消息,如果这个消息是 WM_QUIT(程序退出消息)就返回 0,结束 while 循环。如果不是退出消息,那么就执行 TranslateMessage 翻译消息,这个操作主要是对一些消息进行转换,例如把键盘的虚拟键消息转换为字符消息。
接着调用 DispatchMessage 将消息分派给相应的窗口过程。
注意:他不是直接通过 DispatchMessage 调用我们的窗口过程 WndProc,这里其实 DispatchMessage 是带着消息去找操作系统,然后再由操作系统调用 WndProc 窗口过程。看起来有点纠结哈,不过这就是消息机制的一个真实面目,操作系统为了绝对的控制权,时时刻刻都监控着应用程序的运行。
在窗口过程中,我们对感兴趣的消息进行监控并部署相应的代码,对不感兴趣的消息我们都扔给DefWindowProc,让操作系统以默认的方式来处理消息。
|