- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
消息机制
百科名片??
消息机制
在Windows中发生的一切都可以用消息来表示,消息用于告诉操作系统发生了什么,所有的Windows应用程序都是消息驱动的。 一个消息是由消息的名称(UINT)和两个参数(WPARAM, LPARAM)组成。消息的参数中包含有重要的信息。例如对鼠标消息而言,LPARAM中一般包含鼠标的位置信息,而WPARAM参数中包含了发生该消息时,SHIFT、CTRL等键的状态信息,对于不同的消息类型来说,两个参数也都相应地具有明确意义。
目录
消息机制是Windows应用程序的核心
消息与输入焦点
1. 标准的Windows消息
2) 鼠标消息
浅析Windows消息机制
1、消息的组成:
2、谁将收到消息:
3、未处理的消息到那里去了:
4、窗口句柄:
5、示例:
消息队列
消息循环
队列化消息与非队列化消息
SendMessage()与PostMessage()的区别
函数peekmessage和getmessage的区别
消息机制是Windows应用程序的核心
消息与输入焦点
1. 标准的Windows消息
2) 鼠标消息
浅析Windows消息机制
1、消息的组成:
2、谁将收到消息:
3、未处理的消息到那里去了:
4、窗口句柄:
5、示例:
消息队列
消息循环
队列化消息与非队列化消息
SendMessage()与PostMessage()的区别
函数peekmessage和getmessage的区别
展开
消息机制是Windows应用程序的核心
在Windows中,不同的消息由应用程序的不同部分进行处理。MFC库将很多底层的消息都屏蔽了,使用户更加方便、简易地处理消息。例如,用户接收到诸如移动鼠标键(WM_MOUSEMOVE)消息或单击鼠标键(WM_LRBUTTONDOWN)消息时不必处理窗口和鼠标的重画工作,MFC及应用程序框架会替用户做这些工作。在使用MFC进行编程时,用户只需处理一些高层的消息,例如,“用户在单击窗口中的OK按扭”,“用户现在选中了下拉列表框中的第五项”等等,这样就大大减轻了程序员的负担。
消息与输入焦点
Windows是一个以消息为导向的系统,应用程序只能被动地等待用户按键的消息,不能主动地去读键盘的状态,也就是说,每当键盘上有个键被按下,系统就会发出一个按键消息给窗口,告诉它某个键被按下去了,只要鼠标移动一下,系统也会发出相应的消息,并把鼠标的坐标信息传给窗口。
Windows可以同时执行许多程序,但键盘只有一个,怎么判断由哪个窗口接收键盘及鼠标的消息呢?采用“输入焦点”(input focus)技术可以解决这个问题。只要某个窗口取得输入焦点,它不但会被提升到屏幕的最前面,颜色也会有所不同,所有的键盘消息就会导向该窗口,该窗口也成为“活动窗口”。
窗口如何取得输入焦点?通常被鼠标单击的窗口会得到输入焦点,除此之外,程序本身也可以利用SetFocus()来指定哪个窗口拥有输入焦点。
CWnd* CWnd::SetFocus();
如果调用某窗口的SetFocus()成员函数,该窗口就可以取得输入焦点,该函数返回前一个拥有输入焦点的窗口。
如果某个窗口的输入焦点被抢走,Windows系统就会发出WM_KILLFOCUS消息给这个失去输入焦点的窗口,同时还会告诉该窗口下一个取得输入焦点的窗口的指针。而获得输入焦点的窗口则会收到WM_SETFOCUS消息。
消息响应函数分别为:
afx_msg void OnKillFocus(CWnd* pNewWnd);
其中的参数为得到输入焦点的窗口的指针。
Afx_msg void OnSetFocus(CWnd* pOldWnd);
其中的参数为失去输入焦点的窗口的指针。
消息的分类
Windows系统预定义了许多消息,每个消息都拥有一个宏定义,即用形象的字符串来标识消息,一系列#define 语句将消息与特定数值联系起来,可以在头文件WinUser.h中找到这些宏定义,例如
#define WM_PAINT 120
可以在程序中通过消息名“WM_PAINT”来访问它。其他消息如:
#define WM_MOUSEMOVE 0x0200
#define WM_LBUTTONDOWN 0x0201
#define WM_LBUTTONUP 0x0202
#define WM_LBUTTONDBLCLK 0x0203
#define WM_RBUTTONDOWN 0x0204
#define WM_RBUTTONUP 0x0205
#define W
您可能关注的文档
最近下载
- 初中英语《比较级和最高级》课件.pptx VIP
- 13、公路工程预算定额JTG-T B06-03-2007.doc VIP
- 微信公众号外包方案.docx VIP
- 2008年修电脑1400张照片连接.docx VIP
- 抽水试验报告-1.docx
- 可行性研究报告财务分析自动计算电子表格资料.xls VIP
- 方正证券-电子行业深度报告:光刻胶研究框架2.0,详解上游单体、树脂、光酸、光引发剂-220125.pdf VIP
- 2025年中国康复医疗产业市场前景分析与投资建议报告.docx
- 奶牛养殖场建设项目可行性实施报告可行性实施报告.docx
- 2025年中国共青团入团团员必知知识考试题与答案 .pdf VIP
文档评论(0)