本节内容 消息的分发 视频提供:昆山爱达人信息技术有限公司 官网地址:www.bcdaren.com 联系QQ:1250121864 QQ交流群 :49759272 联系电话:0512-57882866
要点回顾: 1、消息队列不止一个: <1> SentMessagesListHead //接到SendMessage发来的消息 <2> PostedMessagesListHead //接到PostMessage发来的消息 <3> HardwareMessagesListHead //接到鼠标、键盘的消息 2、GetMessage()函数不仅仅读取消息
如果注释掉DispatchMessage会发生什么事情? MSG msg; 1、引出问题: 如果注释掉DispatchMessage会发生什么事情? MSG msg; while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } 引出消息的分发
User32!DispatchMessage 调用 w32k!NtUserDispatchMessage 3、其他队列的处理流程: User32!DispatchMessage 调用 w32k!NtUserDispatchMessage <1> 根据窗口句柄找到窗口对象 <2> 根据窗口对象得到窗口过程函数,由0环发起调用 代码读到内核回调处
4、消息的转换 <参加课堂代码>
5、默认的消息处理函数 <参加课堂代码>
昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 课后练习: <线上班>学员可见