版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第5章 消息映射机制 本章主要内容: 消息分类 事件驱动程序设计 消息结构 消息循环 消息映射实现方法,2,5.1 消息分类 1. 系统消息和应用程序消息 消息可以分为系统消息(鼠标等)和应用程序消息(用户等)。 2. 队列消息和非队列消息 从消息的发送途径来看,消息可以分为队列消息和非队列消息。队列消息送到系统消息队列,然后由系统分发至各线程消息队列,非队列消息直接送给窗口过程。 常用的鼠标、键盘事件,由鼠标、键盘驱动程序转换成消息,并把消息送到系统消息队列。,3,5.2 事件驱动程序设计 DOS应用程序主要是顺序的过程驱动程序的设计方法,有 一个明显的开始、明显的过程、明显的结束。 例
2、: 计算一个班三次检测的平均成绩: 启动 输入姓名 输入第三次测验成绩 输入第一次测验成绩 计算平均成绩 输入第二次测验成绩 结束,4,Windows应用程序设计是事件驱动程序设计、根据消息的产 生与处理而实现的,即对应用程序要发出或接收的消息进行排序 和管理。(消息是不会以任何预定义顺序出现的)。 启 动 Winmain,RegisterClass,CreateWindow 输入姓名 消息处理 输入第一次检测成绩 Getmessage/Dispatchmessage 输入第二次检测成绩 window procedure 输入第三次检测成绩 various windows APIS 计算平均成
3、绩 结 束,5,5.3 消息结构 为了从消息队列中获取消息信息,需要使用MSG结构。 MSG结构的定义如下图. 该结构包括6个成员,用来描述消息的有关属性:接收消息的窗口句柄、消息标记、第一个消息参数、第二个消息参数、消息触发的时间、消息触发时鼠标的位置。 所谓消息映射,就是让程序员指定某个消息处理能力的类来处理某个消息。,6,typedef struct tagmsg HWND hwnd; 可检索驻留在消息队列中的消息 UINT message; 消息值,每一个消息有一值。 WPARAM wparam 字参数 LPARAM lparam 长字参数 DWORD time; 消息送至队列的时间
4、(32 byte) POINT pt; 消息发送时,屏幕光标位置。 MSG; (pt也是一个结构体),0时,检索消息队列中的消息,根据消息值message判别是否有消息, 根据wparam,lparam选处理方法,7,5.4 消息循环 Windows将产生的消息放入应用程序的消息队列中,而应用程序的Winmain函数从消息循环队列中提取消息,并将其传递给窗口函数的相应过程处理。 消息循环的格式: MSGmsg; 得到所有指向该程序的消息 while ( GetMessage ( GetMessage 的作用是从消息队列中读取一条消息, 并将消息放到一个 msg 的结构中, 返回值是0时,程序终
5、止循环。 。 TranslateMessage 将消息的虚拟键转为字符信息。 DispatchMessage 消息传送。,8,Mouse Driver Keyboard Driver Message from otherWindows,System Message queue,Application Message queue,USER Module,9,WinMain (hinst, hPrev) MSG msg; RegisterClass(.) CreateWindow() ShowWindow() UpdateWindow() 更新窗口 While(GetMessage( ,USER
6、Module,10,Visual C+提供了类向导,帮助实现消息映射,在处理消息的类中添加消息处理函数。程序员可以在这些消息处理函数中添加代码,实现某些功能。 MFC使用类向导帮助实现消息映射,它帮助程序员声明和实现消息处理函数,并添加一些代码实现消息映射。,5.5 消息映射的实现方法-以菜单控制为例 菜单控制指通过菜单选项,向应用程序发送命令,应用程序处理消息。,11, 用Appwizard生成一个单文档程序框架; 在Workspace中打开Menu, 双击 IDR_MAIN_FRAME: 得到应用程序缺省菜单资源。,12, 双击菜单空白(或者右键,选属性),13, 按住拖动菜单到适当位置,双击下拉菜单。,14, 在“计算”栏或者其它栏右击键,选ClassWizard,15,菜单的ID(每一个下拉菜单都有一个ID,需要编函数与ID联接。,16, Object IDS: 确定消息属主对象
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学本科应用统计学教案:高区分度试题的深度解析与思维建构
- 小学英语五年级下册 Unit 1 My day PA Lets talk 单元整体教学设计
- 统编版初中道德与法治八年级上册期末高效复习教案
- 小学英语四年级上册《Unit 2 Help Yourself》单词与句型深度整合式教案
- 小学数学二年级上册《问题解决(表内乘除法综合应用)》第4课时教学设计
- 大学本科思想政治教育专业三年级专业核心课《领导科学基础》单元教案:严管与厚爱的辩证法-激发新时代青年干部的担当作为
- 小学一年级科学(大象版)《画蚂蚁》体验单元精研教案
- 小学三年级数学《实际问题解决:乘加两步计算与应用》第一课时教案
- 小学三年级英语下册《Unit 1 A Lets Spell》情境探究式教案
- 九年级英语上册Unit8情态动词表推测综合语言运用能力评价教案
- 2026年软考《系统架构设计师》基础知识真题
- 2026年秋统编版(新教材)道德与法治五年级上册(全册)分层作业及答案(附目录)
- 城市轨道交通站务员岗前能力评估考核试卷含答案
- 昆明市2025-2026学年数学三年级下学期期末综合测试试题(含答案解析)
- 工程监理工作重难点分析及其应对措施
- 医疗器械使用知情同意书范本
- 2026年房地产经纪人《房地产交易制度政策》考试真题(后附答案解析)
- 水利水电工程单元工程施工质量检验表与验收表(SLT631.5-2025)
- 《心系国防 强国有我》 课件-2024-2025学年高一上学期开学第一课国防教育主题班会
- 金矿堆浸场改扩建项目环评报告书
- 中医脾胃科知识讲座
评论
0/150
提交评论