- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深度解析VC中的消息传递机制
?
深度解析VC中的消息传递机制
摘要:Windows编程和Dos编程,一个很大的区别就是,Windows编程是事件驱动,消息传递的。所以,要学好Windows编程,必须
对消息机制有一个清楚的认识,本文希望能够对消息的传递做一个全面的分析。
一、什么是消息?
消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定
义了一个事件,向Windows发出一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键
都会使Windows发送一个消息给应用程序。
消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来
说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做MSG,MSG含有来自windows应用程序消息队列的消息信息,它在
Windows中声明如下:
typedef struct tagMsg
{
HWND hwnd;//接受该消息的窗口句柄
UINT message;//消息常量标识符,也就是我们通常所说的消息号
WPARAM wParam;//32位消息的特定附加信息,确切含义依赖于消息值
LPARAM lParam;//32位消息的特定附加信息,确切含义依赖于消息值
DWORD time;//消息创建时的时间
POINT pt;//消息创建时的鼠标/光标在屏幕坐标系中的位置
}MSG;
消息可以由系统或者应用程序产生。系统在发生输入事件时产生消息。举个例子,当用户敲键,移动鼠标或者单击控件。系统也
产生消息以响应由应用程序带来的变化,比如应用程序改变系统字体,改变窗体大小。应用程序可以产生消息使窗体执行任务,
或者与其他应用程序中的窗口通讯。
二、消息中有什么?
我们给出了上面的注释,是不是会对消息结构有了一个比较清楚的认识?如果还没有,那么我们再试着给出下面的解释:
hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可视对象的句柄(窗口、对话框、按钮、编辑
框等)。
message用于区别其他消息的常量值。这些常量可以是Windows单元中预定义的常量,也可以是自定义的常量。消息标识符以常量
命名的方式指出消息的含义。当窗口过程接收到消息之后,他就会使用消息标识符来决定如何处理消息。例如、WM_PAINT告诉窗
口过程窗体客户区被改变了需要重绘。符号常量指定系统消息属于的类别,其前缀指明了处理解释消息的窗体的类型。
wParam通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。
lParam通常是一个指向内存中数据的指针。由于WParam、lParam和Pointer都是32位的,因此,它们之间可以相互转换。
三、消息标识符的值
系统保留消息标识符的值在0x0000在0x03ff(WM_USER-1)范围。这些值被系统定义消息使用。应用程序不能使用这些值给自己的
消息。
应用程序消息从WM_USER(0X0400)到0X7FFF,或0XC000到0XFFFF;WM_USER到0X7FFF范围的消息由应用程序自己使用;0XC000到
0XFFFF范围的消息用来和其他应用程序通信,我们顺便说一下具有标志性的消息值:
WM_NULL---0x0000空消息。
0x0001--0x0087主要是窗口消息。
0x00A0--0x00A9非客户区消息
0x0100--0x0108键盘消息
0x0111--0x0126菜单消息
0x0132--0x0138颜色控制消息
0x0200--0x020A鼠标消息
0x0211--0x0213菜单循环消息
0x0220--0x0230多文档消息
0x03E0--0x03E8 DDE消息
0x0400 WM_USER 0x8000 WM_APP 0x0400--0x7FFF应用程序自定义私有消息
四、消息有的分类
其实,windows中的消息虽然很多,但是种类并不繁杂,大体上有3种:窗口消息、命令消息和控件通知消息。
窗口消息大概是系统中最为常见的消息,它是指由操作系统和控制其他窗口的窗口所使用的消息。例如CreateWindow、
DestroyWindow和MoveWindow等都会激发窗口消息,还有我们在上面谈到的单击鼠标所产生的消息也是一种窗口消息。
命令消息这是一种特殊的窗口消息,他用来处理从一个窗口发送到另一个窗口的用户请求,例如按下一个按钮,他就会向主窗口
发送一个命令消息。
控件通知消息是指这样一种消息,一个窗口内的子控件发生了一些事情,需要通知父窗口。通知消息只适用于标准的窗口控件如
按钮、列表框、组合框、编辑框,以及Windows公共控件如树状视图
您可能关注的文档
- 全国各省简介——重庆.doc
- 全面和系统地论述了我国对工商关系的新规制以及积极发.doc
- 全排列算法讨论.doc
- 全球各国家名词中英文名对照版.doc
- 全球票房排行榜中文.docx
- 缺乏机动性和灵活性.doc
- 全自动洗衣机控制部分设计.doc
- 全球最美99女性评选揭晓争奇斗艳多图-世界最美女人评选.docx
- 群体的智慧如何做出最聪明的决策二.doc
- 确定目标的IP地址和自己的IP地址IP的用处.doc
- 急性肾功能衰竭综合征的肾血管介入性诊治4例报告并文献复习.docx
- 基于血流动力学、镇痛效果分析右美托咪定用于老年患者髋部骨折术的效果.docx
- 价格打骨折 小心统筹车险.docx
- 交通伤导致骨盆骨折合并多发损伤患者一体化救治体系的效果研究.docx
- 多层螺旋CT与DR片诊断肋骨骨折的临床分析.docx
- 儿童肱骨髁上骨折后尺神经损伤恢复的预测因素分析.docx
- 康复联合舒适护理在手骨折患者中的应用及对其依从性的影响.docx
- 机器人辅助老年股骨粗隆间骨折内固定术后康复.docx
- 超声辅助定位在老年髋部骨折患者椎管内麻醉中的应用:前瞻性随机对照研究.docx
- 两岸《经济日报》全面合作拉开帷幕.docx
最近下载
- 益阳老旧小区改造项目可行性研究报告.docx
- 容纳百川的青岛海洋文化.pptx VIP
- 回字格+米字格练字模版(A4最大利用率).doc VIP
- 2025年茶饮行业茶底多样性及口味丰富调研汇报.pptx VIP
- 【港交所-2025研报】北京弈斯伟计算港股招股说明书.pdf VIP
- SY/T 5612-2018 石油天然气钻采设备 钻井液固相控制设备规范.pdf
- 22G101-1混凝土结构施工图平面整体表示方法制图规则和构造详图(现浇混凝土框架、剪力墙、梁、板)(OCR).pdf VIP
- 产品质量保障措施.docx VIP
- 成都市2026届高三高中毕业班第一次诊断性检(一诊)测历史试卷(含官方答案).pdf
- 08J332 砌体地沟参考标准.docx VIP
原创力文档


文档评论(0)