消息映射机制

消息映射机制

ID:44791170

大小:320.00 KB

页数:18页

时间:2019-10-29

消息映射机制_第1页
消息映射机制_第2页
消息映射机制_第3页
消息映射机制_第4页
消息映射机制_第5页
资源描述:

《消息映射机制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第5章消息映射机制本章主要内容:①消息分类②事件驱动程序设计③消息结构④消息循环⑤消息映射实现方法15.1消息分类1.系统消息和应用程序消息消息可以分为系统消息(鼠标等)和应用程序消息(用户等)。2.队列消息和非队列消息从消息的发送途径来看,消息可以分为队列消息和非队列消息。队列消息送到系统消息队列,然后由系统分发至各线程消息队列,非队列消息直接送给窗口过程。常用的鼠标、键盘事件,由鼠标、键盘驱动程序转换成消息,并把消息送到系统消息队列。25.2事件驱动程序设计DOS应用程序主要是顺序的过程驱动程序的设计方法,有一个明显的开始、明显的过程、明显的结束。例:计算一个班三次检测的

2、平均成绩:①启动②输入姓名⑤输入第三次测验成绩③输入第一次测验成绩⑥计算平均成绩④输入第二次测验成绩⑦结束3Windows应用程序设计是事件驱动程序设计、根据消息的产生与处理而实现的,即对应用程序要发出或接收的消息进行排序和管理。(消息是不会以任何预定义顺序出现的)。①启动Winmain,RegisterClass,CreateWindow输入姓名②消息处理输入第一次检测成绩Getmessage/Dispatchmessage输入第二次检测成绩windowprocedure输入第三次检测成绩variouswindowsAPIS计算平均成绩③结束45.3消息结构为了从消息队列中

3、获取消息信息,需要使用MSG结构。MSG结构的定义如下图.该结构包括6个成员,用来描述消息的有关属性:接收消息的窗口句柄、消息标记、第一个消息参数、第二个消息参数、消息触发的时间、消息触发时鼠标的位置。所谓消息映射,就是让程序员指定某个消息处理能力的类来处理某个消息。5typedefstructtagmsg{HWNDhwnd;可检索驻留在消息队列中的消息UINTmessage;消息值,每一个消息有一值。WPARAMwparam字参数LPARAMlparam长字参数DWORDtime;消息送至队列的时间(32byte)POINTpt;消息发送时,屏幕光标位置。}MSG;(pt也

4、是一个结构体)0时,检索消息队列中的消息根据消息值message判别是否有消息,根据wparam,lparam选处理方法65.4消息循环Windows将产生的消息放入应用程序的消息队列中,而应用程序的Winmain函数从消息循环队列中提取消息,并将其传递给窗口函数的相应过程处理。消息循环的格式:MSGmsg;得到所有指向该程序的消息while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);消息范围DispatchMessage(&msg);}◆GetMessage的作用是从消息队列中读取一条消息,并将消息放到一个msg的结

5、构中,返回值是0时,程序终止循环。。◆TranslateMessage将消息的虚拟键转为字符信息。◆DispatchMessage消息传送。7MouseDriverKeyboardDriverMessagefromotherWindowsSystemMessagequeueApplicationMessagequeueUSERModule8WinMain(hinst,hPrev…){MSGmsg;RegisterClass(..)CreateWindow(…)ShowWindow(…)UpdateWindow(…)更新窗口While(GetMessage(&msg…)){Tr

6、anslateMessage(…)DispatchMessage(…);}returnmsg.wParam;}WndProc(hwnd,msg,wParam,lParam){switch(msg){消息处理}return(0);}USERModule①②③9VisualC++提供了类向导,帮助实现消息映射,在处理消息的类中添加消息处理函数。程序员可以在这些消息处理函数中添加代码,实现某些功能。MFC使用类向导帮助实现消息映射,它帮助程序员声明和实现消息处理函数,并添加一些代码实现消息映射。5.5消息映射的实现方法----以菜单控制为例菜单控制指通过菜单选项,向应用程序发送命令

7、,应用程序处理消息。10①用Appwizard生成一个单文档程序框架;②在Workspace中打开Menu,双击IDR_MAIN_FRAME:得到应用程序缺省菜单资源。11③双击菜单空白(或者右键,选属性)12④按住拖动菜单到适当位置,双击下拉菜单。13⑤在“计算”栏或者其它栏右击键,选ClassWizard14菜单的ID(每一个下拉菜单都有一个ID,需要编函数与ID联接。15●ObjectIDS:确定消息属主对象●Message菜单选项消息包括(命令消息和维护自身消息)●增加成员函数MessageMa

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。