mfc 教程 第07章 鼠标和键盘

mfc 教程 第07章 鼠标和键盘

ID:22672444

大小:591.00 KB

页数:26页

时间:2018-10-21

mfc 教程 第07章 鼠标和键盘_第1页
mfc 教程 第07章 鼠标和键盘_第2页
mfc 教程 第07章 鼠标和键盘_第3页
mfc 教程 第07章 鼠标和键盘_第4页
mfc 教程 第07章 鼠标和键盘_第5页
资源描述:

《mfc 教程 第07章 鼠标和键盘》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7章鼠标和键盘1本章主要内容鼠标的客户区消息和非客户区消息的处理鼠标消息的捕获处理键盘消息27.1处理鼠标消息根据产生鼠标消息时鼠标光标所处的位置,鼠标消息分为两类:客户区鼠标消息非客户区鼠标消息37.1处理鼠标消息4MFC中,鼠标消息响应函数的原型一般为:afx_msgvoidOnLButtonDown(UINTnFlags,CPointpoint);掩码产生鼠标消息时光标在窗口客户区的位置7.1处理鼠标消息57.1处理鼠标消息6例7-1编写可以在用户区中绘制一个矩形的应用程序,在按下鼠标左键后,这个矩形会把它的左上角移动到鼠标位置;而当按下Shift键的同时按下鼠标左键,则矩形

2、恢复原位置.例7-2一个测试鼠标移动消息的程序.77.1.2非客户区鼠标消息WM_NCLBUTTONDBCLK双击鼠标左键WM_NCLBUTTONDOWN按下鼠标左键WM_NCLBUTTONUP释放鼠标左键WM_NCMOUSEMOVE在客户区移动鼠标WM_NCRBUTTONDBCLK双击鼠标右键WM_NCRBUTTONDOWN按下鼠标右键WM_NCRBUTTONUP释放鼠标右键8例7-3编写一个程序,使鼠标的光标在标题栏或窗口边框上移动时,在用户区显示鼠标光标的位置.9说明:使用非客户区鼠标移动消息WM_MOUSEMOVE,并在其响应函数中编写显示代码.用MFCAppWizard创建

3、一个单文档应用程序框架在主框架窗口类CMainFrame的声明中,手工添加消息响应函数的声明10afx_msgvoidOnNcMouseMove(UINTnHitTest,CPointpoint);3.在主框架窗口类CMainFrame的实现文件的消息映射表中,添加消息映射BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)ON_WM_NCMOUSEMOVE()END_MESSAGE_MAP()11在主框架窗口类CMainFrame的实现文件中,添加鼠标响应函数的实现:voidCMainFrame::OnNcMouseMove(UINTnHitTest,CP

4、ointpoint){CClientDCclientDC(this);chars[20];wsprintf(s,"X=%dY=%d",point.x,point.y);clientDC.TextOut(20,20,s);CFrameWnd::OnNcMouseMove(nHitTest,point);}12如果鼠标处在应用程序窗口之外,还希望可以接受鼠标消息的话,则必须调用捕获鼠标消息函数:CWnd*SetCapture();完成了所应该做的工作之后,应用程序应该及时释放鼠标:BOOLReleaseCapture();7.1.3鼠标消息的捕获13例7-4当鼠标左键按下时,可以捕获鼠标

5、消息的程序.如果画线???147.2处理键盘消息Windows对每个按键定义了与设备无关的编码,这种编码就叫做虚拟码。有了这个虚拟码,Windows程序员就可以不必理睬扫描码,而使用虚拟码来编写程序了虚拟码扫描码157.2处理键盘消息,16例7-5设计一个程序,在用户区显示一个圆形,当分别按下键盘上的左箭头键或者右箭头键时,可以使这个圆形向左或者向右移动.177.2.2一般按键消息Windows的一般按键消息WM_CHAR当敲击键盘上的字符键时,产生该消息WM_KEYDOWN任意键(包括字符键)被按下时都产生该消息.如果被按下的是字符键,在产生消息的同时还产生字符消息.WM_KEYU

6、P任意键(包括字符键)被释放时都产生该消息18消息响应函数voidOnChar(UINTnChar,UINTRepCnt,UINTnFlags);voidOnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags);voidOnKeyUp(UINTnChar,UINTnRepCnt,UINTnFlags);19参数nFlags传递的是按键的一些位信息,它是一个32位数,各位所表达的含义如下:0~15按键的重复次数16~23按键的扫描码24扩展键标志(0:无扩展键;1:有扩展键,例如一个功能键或者一个数字小键盘上的键)2025~28由windows内部使用29

7、Alt键标志(0:没有按下Alt键;1:按下了Alt键)30前面的按键状态标志(0:一次按键1:重复按键)31键被按下或松开的标志(0:键被按下;1:键被松开)21例7-6给例7-5程序增加一个功能,当分别按下R键或者L键时,可以分别使圆形快速的移动.227.2.3系统按键消息系统按键消息是用户按下了Alt键的同时,又按下其他相关输入键时产生的消息.系统按键消息一般不由应用程序来处理,而由系统直接处理.23WM_SYSKEYDOWN按下系统键时产生的消息W

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

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

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