消息循环
来源:互联网 发布:讨厌表情包 知乎 编辑:程序博客网 时间:2024/06/10 05:05
初始化工作完成后,WinMain 进入所谓的消息循环:
while (GetMessage(&msg,...)) {
TranslateMessage(&msg); // 转换键盘消息
DispatchMessage(&msg); // 分派消息
}
其中的TranslateMessage是为了将键盘消息转化,DispatchMessage 会将消息传给窗口函数去处理。没有指定函数名称,却可以将消息传送过去,岂不是很玄?这是因为消息发生之时,操作系统已根据当时状态,为它标明了所属窗口,而窗口所属之窗口类又已经明白标示了窗口函数(也就是 wc.lpfnWndProc 所指定的函数),所以 DispatchMessage自有脉络可寻。请注意图 1-2 所示,DispatchMessage 经过USER模块的协助,才把消息交到窗口函数手中。
消息循环中的GetMessage是Windows 3.x非强制性(non-preemptive)多任务的关键。应用程序藉由此动作,提供了释放控制权的机会:如果消息队列上没有属于我的消息,我就把机会让给别人。通过程序之间彼此协调让步的方式,达到多任务能力。Windows 95 和Windows NT 具备强制性(preemptive)多任务能力,不再非靠 GetMessage释放CPU 控制权不可,但程序写法依然不变,因为应用程序仍然需要靠消息推动。它还是需要抓消息!
- 消息循环
- 消息循环
- 消息循环
- 消息循环
- 消息循环
- 消息循环
- 消息循环
- 消息循环
- 消息循环
- 消息循环
- 消息循环
- 消息队列与消息循环
- windows消息与消息循环
- 消息和消息处理之消息循环
- MFC中的消息循环
- 创建消息循环
- 遭遇Windows消息循环
- MFC消息循环
- Linux系统管理命令集
- 窗口类之注册与窗口之诞生
- VS 2010无法创建项目提示写入项目文件时出错 没有注册类别
- bulk insert 用法
- Linux压缩打包命令使用方法
- 消息循环
- 客厅里的名词解释
- showdialog
- C**语言特性介绍(1) --- 自乘操作符
- DTS(Digital Theatre System,数字化影院系统)
- hdu 1267
- hdu 1263
- 开发中常用linux命令 --未分类
- 开启xp路由功能