MFC的消息处理模式

MFC的消息处理模式

ID:39466196

大小:72.00 KB

页数:14页

时间:2019-07-04

MFC的消息处理模式_第1页
MFC的消息处理模式_第2页
MFC的消息处理模式_第3页
MFC的消息处理模式_第4页
MFC的消息处理模式_第5页
资源描述:

《MFC的消息处理模式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第七章MFC的消息处理模式一消息与输入焦点Windows编程与其它类型编程的最大不同之处在于使用消息机制,所有的Windows应用程序都是消息驱动的,消息机制是Windows应用程序的核心。在Windows中发生的一切都可以用消息来表示,消息用于告诉操作系统发生了什么。在Windows中,所有的消息都有一个特定的名字,实质上是用不同的整数来标记。Windows系统预定义了许多消息,每个消息都拥有一个宏定义,即用形象的字符串来标识消息,一系列#define语句将消息与特定数值联系起来,可以在头文件WinUser.h中找到这些宏定义,例如#defineWM_PAINT12

2、0可以在程序中通过消息名“WM_PAINT”来访问它。其他消息如:#defineWM_MOUSEMOVE0x0200#defineWM_LBUTTONDOWN0x0201#defineWM_LBUTTONUP0x0202#defineWM_LBUTTONDBLCLK0x0203#defineWM_RBUTTONDOWN0x0204#defineWM_RBUTTONUP0x0205#defineWM_RBUTTONDBLCLK0x0206#defineWM_MBUTTONDOWN0x0207#defineWM_MBUTTONUP0x0208#defineWM_MBUTT

3、ONDBLCLK0x0209消息是由消息的名称(UINT)和两个参数(WPARAM,LPARAM)组成。消息的参数中包含有重要的信息。例如对鼠标消息而言,LPARAM中一般包含鼠标的位置信息,而WPARAM参数中包含了发生该消息时,SHIFT、CTRL等键的状态信息,对于不同的消息类型来说,两个参数也都相应地具有明确意义。Windows是一个以消息为导向的系统,应用程序只能被动地等待消息的发生,每当键盘上有个键被按下,系统就会发出一个按键消息给窗口,告诉它某个键被按下去了,只要鼠标移动一下,系统也会发出相应的消息,并把鼠标的坐标信息传给窗口。Windows可以同时执行

4、许多程序,但键盘只有一个,怎么判断由哪个窗口接收键盘及鼠标的消息呢?采用“输入焦点”(inputfocus)技术可以解决这个问题。只要某个窗口取得输入焦点,它不但会被提升到屏幕的最前面,颜色也会有所不同,所有的键盘消息就会导向该窗口,该窗口也成为“活动窗口”。窗口如何取得输入焦点?通常被鼠标单击的窗口会得到输入焦点,除此之外,程序本身也可以利用SetFocus()来指定哪个窗口拥有输入焦点。CWnd*CWnd::SetFocus();如果调用某窗口的SetFocus()成员函数,该窗口就可以取得输入焦点,该函数返回前一个拥有输入焦点的窗口。如果某个窗口的输入焦点被抢走

5、,Windows系统就会发出WM_KILLFOCUS消息给这个失去输入焦点的窗口,同时还会告诉该窗口下一个取得输入焦点的窗口的指针。而获得输入焦点的窗口则会收到WM_SETFOCUS消息。消息响应函数分别为:afx_msgvoidOnKillFocus(CWnd*pNewWnd);其中的参数为得到输入焦点的窗口的指针。Afx_msgvoidOnSetFocus(CWnd*pOldWnd);其中的参数为失去输入焦点的窗口的指针。二消息的分类系统定义的消息有不同的前缀,不同的前缀有不同的含义。1.标准的Windows消息除了WM_COMMAND消息,所有以WM_为前缀的消

6、息都是标准的Windows消息,如窗口、鼠标移动、窗口大小改变等。WM_是“WindowsMessage”的意思。程序启动或退出甚至每一段固定的时间都会产生标准的Windows消息。键盘消息和鼠标消息都属于标准的Windows消息。(1)键盘消息对于窗口而言,来自用户的按键输入可分为两类,一类是系统键(systemkey),另一类则是非系统键。凡是ALT和其它键一同按下的组合称为“系统键”,窗口收到系统键之后,会自动地将它解释成系统事件,或者查阅键盘加速表,将系统键翻译成加速表指定的信息。如:ALT+F4的组合会迫使窗口关闭,“ALT+字母”的组合可能会拉下某个菜单。

7、当用户按下某个键时,Windows系统会先发出WM_KEYDOWN消息给窗口,这个消息的意思是“按键被压下去”。接着Windows系统会发出WM_CHAR给同一个窗口,这个消息代表的意义是“系统送来某个字符”,如果用户放开此键,Windows系统会发出WM_KEYUP消息,表示“按键被放开”。如果用户一直按住某个键不放,经过一段时间之后会产生“连发”的效果,造成Windows系统不停地发出WM_KEYDOWN与WM_CHAR消息。计算机内部以ASCII码的规则来记录所有的英文字母和数字符号。不过不是键盘上每个按键都可以对应成ASCII码中的字符,如大

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

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

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