“进队消息” 与 “不进队消息”

Windows 给窗口发送消息,意味着 Windows 调用窗口过程。但是,Windows程序也有一个消息循环,它调用 GetMessage 从消息队列中取出消息,并且调用 DiapatchMessage 将消息发送给窗口过程。

消息能够被分为“进队的” 和 “不进队的”。
进队的消息是由 Windows 放入程序消息队列中。在程序的消息循环中,重新返回并分配给窗口过程。
不进队的消息在 Windows 调用窗口时直接送给窗口过程。
即,进队的消息被“发送”给消息队列,而不进队的消息则“发送”给窗口过程。

在任何情况下,窗口过程都将获得窗口所有的消息——包括进队的和不进队的。窗口过程是窗口的“消息中心”。

进队消息基本上是用户输入的结果,以击键(如 WM_KEYDOWN 和 WM_KEYUP 消息)、击键产生的字符(WM_CHAR)、鼠标移动(WM_MOUSEMOVE)和鼠标键(WM_LBUTTONDOWN)的形式给出。进队消息还包括时钟消息(WM_TIMER)、刷新消息(WM_PAINT)和退出消息(WM_QUIT)。
 
不进队消息则是其他消息。在许多情况下,不进队消息来自调用特定的 Windows 函数。例如,当 WinMain 调用 CreateWindow 时,Windows 将给窗口过程发送一个 WM_CREATE 消息。当 WinMain 调用 ShowWindow 时,Windows 将给窗口过程发送 WM_SIZE 和 WM_SHOWWINDOW 消息。当 WinMain 调用 UpdateWindow 时,Windows 将给窗口过程发送 WM_PAINT 消息。
键盘或鼠标输入时发出的进队消息信息,也能在不进队消息中出现。

posted on 2011-12-20 11:14 梦五 阅读(228) 评论(0)  编辑 收藏 引用 所属分类: Windows相关


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜