MFC教程第07章鼠标和键盘.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFC教程第07章鼠标和键盘

第7章 鼠标和键盘 本章主要内容 鼠标的客户区消息和非客户区消息的处理 鼠标消息的捕获 处理键盘消息 7.1? 处理鼠标消息 根据产生鼠标消息时鼠标光标所处的位置,鼠标消息分为两类: 客户区鼠标消息 非客户区鼠标消息 7.1? 处理鼠标消息 MFC中,鼠标消息响应函数的原型一般为: afx_msg void OnLButtonDown( UINT nFlags, CPoint point ); 例7-1 编写可以在用户区中绘制一个矩形的应用程序,在按下鼠标左键后,这个矩形会把它的左上角移动到鼠标位置;而当按下Shift键的同时按下鼠标左键,则矩形恢复原位置. 例7-2一个测试鼠标移动消息的程序. 7.1.2非客户区鼠标消息 WM_NCLBUTTONDBCLK 双击鼠标左键 WM_NCLBUTTONDOWN 按下鼠标左键 WM_NCLBUTTONUP 释放鼠标左键 WM_NCMOUSEMOVE 在客户区移动鼠标 WM_NCRBUTTONDBCLK 双击鼠标右键 WM_NCRBUTTONDOWN 按下鼠标右键 WM_NCRBUTTONUP 释放鼠标右键 例7-3编写一个程序,使鼠标的光标在标题栏或窗口边框上移动时,在用户区显示鼠标光标的位置. 说明: 使用非客户区鼠标移动消息WM_MOUSEMOVE,并在其响应函数中编写显示代码. 用MFC AppWizard创建一个单文档应用程序框架 在主框架窗口类CMainFrame的声明中,手工添加消息响应函数的声明 afx_msg void OnNcMouseMove(UINT nHitTest,CPoint point); 3.在主框架窗口类CMainFrame的实现文件的消息映射表中,添加消息映射 BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_WM_NCMOUSEMOVE() END_MESSAGE_MAP() 在主框架窗口类CMainFrame的实现文件中,添加鼠标响应函数的实现: void CMainFrame::OnNcMouseMove( UINT nHitTest, CPoint point) { CClientDC clientDC(this); char s[20]; wsprintf(s, X=%d Y=%d , point.x, point.y); clientDC.TextOut(20, 20, s); CFrameWnd::OnNcMouseMove(nHitTest,point); } 如果鼠标处在应用程序窗口之外,还希望可以接受鼠标消息的话,则必须调用捕获鼠标消息函数: CWnd* SetCapture(); 完成了所应该做的工作之后,应用程序应该及时释放鼠标: BOOL ReleaseCapture(); 例7-4 当鼠标左键按下时,可以捕获鼠标消息的程序. 如果画线??? 7.2???? 处理键盘消息 Windows对每个按键定义了与设备无关的编码,这种编码就叫做虚拟码。有了这个虚拟码,Windows程序员就可以不必理睬扫描码,而使用虚拟码来编写程序了 例7-5 设计一个程序,在用户区显示一个圆形,当分别按下键盘上的左箭头键或者右箭头键时,可以使这个圆形向左或者向右移动. 7.2.2一般按键消息 Windows的一般按键消息 WM_CHAR 当敲击键盘上的字符键时,产生该消息 WM_KEYDOWN 任意键(包括字符键)被按下时都产 生该消息.如果被按下的是字符键, 在产生消息的同时还产生字符消息. WM_KEYUP 任意键(包括字符键)被释放时都产 生该消息 消息响应函数 void OnChar(UINT nChar,UINT RepCnt, UINT nFlags); void OnKeyDown(UINT nChar,UINT nRepCnt,UINT nFlags); void OnKeyUp(UINT nChar,UINT nRepCnt,UINT nFlags); 参数nFlags传递的是按键的一些位信息,它是一个32位数,各位所表达的含义如下: 0~15 按键的重复次数 16~23 按键的扫描码 24 扩展键标志(0:无扩展键;1:有扩 展键 ,例如一个功能键或者一个 数字小键盘上的键) 25~28 由windows内部使用 29

文档评论(0)

dashewan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档