07 鼠标和键盘 mfc课件.ppt

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

鼠标和键盘 参考书 《MFC Windows 程序设计》第3章 从鼠标获取输入 鼠标与键盘的输入以消息的形式出现 Windows鼠标消息可分为两类: 非客户区鼠标消息。通常可忽略,由Windows处理。 客户区鼠标消息,这是我们所要关心的。 客户区鼠标消息 添加消息响应函数 利用 ClassWiard 鼠标消息处理函数原型 afx_msg void OnMsgName (UINT nFlags, CPoint point) 其中: point给出了事件发生时鼠标的物理坐标 nFlags参数指出了消息生成时鼠标键及Shift、Ctrl键的状态。 nFlags参数如下: MK_LBUTTON The left mouse button is pressed MK_MBUTTON The middle mouse button is pressed MK_RBUTTON The right mouse button is pressed MK_CONTROL The Ctrl key is pressed MK_SHIFT The Shift key is pressed 检测方法: 如果Ctrl键被按下,则(nFlags MK_CONTROL)值为非0 举例 TicTac 鼠标滚轮 WM_MOUSEWHEEL BOOL OnMouseWheel (UINT nFlags, short zDelta, CPoint point) 捕获鼠标 即使当前光标不在程序中,也能接收鼠标的位置。好处... SetCapture(); ReleaseCapture(); If(GetCapture() == this) 如果本窗口捕获消息则为真。 思考:试着画一条通过鼠标拖动的直线。 光标 利用自定义光标资源 HCURSOR m_myCursor; m_myCursor = AfxGetApp()-LoadCursor(IDC_CURSOR1); SetCursor(m_myCursor); 利用系统定义的光标资源 HCURSOR m_myCursor; m_myCursor = AfxGetApp()-LoadStandardCursor(IDC_CROSS); SetCursor(m_myCursor); 光标 在鼠标移动时,Windows通过重画光标的背景把光标从旧位置上清除。然后它给光标下的窗口发送包含命中测试码为WM_SETCURSOR消息。 示例代码: if(nHitTest == HTCLIENT) { HCURSOR m_myCursor; m_myCursor = AfxGetApp()-LoadStandardCursor(IDC_CROSS); SetCursor(m_myCursor); return TRUE;//important } return CView::OnSetCursor(pWnd, nHitTest, message); 光标 忙光标: BeginWaitCursor(); EndWaitCursor(); 显示与隐藏光标 ShowCursor(FALSE); ShowCursor(TRUE); 说明 :内部有一个累加器,调用FALSE多少次就要相应的调用TRUE多少次,才能显示光标。 限制光标在一个区域 ::ClipCursor(rect):可以限制鼠标在屏幕中指定的矩形范围 (CWnd::GetWindowRect(rect)可以获得当前窗口在屏幕中的区域) 记得要解除限制,因为光标是所有应用程序共享的全局资源: ::ClipCusror(NULL) 举例 MouseCap 从键盘获取输入 WM_KEYDOWN WM_KEYUP WM_CHAR WM_SYSKEYDOWN:Alt或F10 WM_SYSKEYUP 击键消息处理函数原型 afx_msg void OnMsgName(UNIT nChar,UINT nRepCnt,UINT nFlags) 其中nChar是被按下或释放的键的虚拟键代码 nPepCnt是重复次数,一般很少理会 nFlags,与硬件相关,一般不用理会 虚拟键代码(参数nChar) 传递给击键消息处理程序的最重要的值应该是nChar,它标识了被按下或释放的键。Windows用下表中给出的虚拟键代码来标识键,这样应用程序就不必依赖硬编码值了。 A~Z、a~z、0~9的虚拟键代码与自身ANSI码一样,其它如下表: 虚拟键代码(续) 虚拟键代码(续) Shift键状态 ::GetKeyState(...):返回负值说明某键被按下。 如GetKeyState(VK_SHIFT)0,则Shift键被按下。同样可用于VK_CO

文档评论(0)

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

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

1亿VIP精品文档

相关文档