07界面编程5-鼠标、键盘与光标

07界面编程5-鼠标、键盘与光标

ID:15372306

大小:162.00 KB

页数:14页

时间:2018-08-02

07界面编程5-鼠标、键盘与光标_第1页
07界面编程5-鼠标、键盘与光标_第2页
07界面编程5-鼠标、键盘与光标_第3页
07界面编程5-鼠标、键盘与光标_第4页
07界面编程5-鼠标、键盘与光标_第5页
资源描述:

《07界面编程5-鼠标、键盘与光标》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第7章界面编程5-鼠标、键盘与光标Windows是一种基于消息的交互式GUI操作系统,用户的操作主要通过鼠标和键盘进行。Windows利用消息来处理由用户操作所引发的鼠标和键盘事件,程序员一般通过在视图类中添加相应的消息响应函数,并编写具体响应代码来处理鼠标和键盘消息。鼠标的当前位置由屏幕上的光标来表示,程序员可以根据需要来动态设置不同形状的光标。本章先介绍鼠标与键盘消息及其响应,然后再讨论设置与隐藏光标的方法,最后给出一个综合利用鼠标与键盘消息响应和光标设置的实例。7.1鼠标鼠标(mouse)是GUI中最常用的指示跟踪设备,由美国斯坦福研究所的DouglasEngelbart和BillEn

2、glish于1963年发明,BillEnglish于1972年发明滚球式(ball)纯机械鼠标,1983年罗技(Logitech)公司发明了第一只光学机械式(简称为光机式或机械式)鼠标,1999年微软与安捷伦(Aeilent,后改组为安华高,Avago)公司合作推出了IntelliEye光学引擎和世界上第一款不需专业鼠标垫的光电鼠标,2003年微软和罗技分别推出蓝牙无线鼠标,2005年罗技与安华高合作推出了第一款(无线)激光鼠标,2008年微软推出了采用BlueTrack技术几乎兼容所有表面的蓝光鼠标。现代鼠标一般为带滚轮的三键光电或激光式有线或无线(蓝牙或红外)鼠标。7.1.1鼠标事件与消

3、息鼠标事件(mouseevent)指用户的鼠标操作,基本的鼠标操作有:按下(press)和松开(release)鼠标键、单击(click)或双击(double-click)鼠标键、移动(move)或拖动(drag)鼠标,其中左鼠标键按下/松开、移动/拖动鼠标在编程中最常用。大多数鼠标操作都有相对应的Windows消息(参见表7-1)。按照鼠标事件发生时鼠标光标所处的窗口区域,可以把鼠标消息分成两类:l客户区(clientarea)鼠标消息:鼠标光标位于窗口的客户区时所产生的鼠标消息。l非客户区(nonclientarea)14鼠标消息:鼠标光标位于窗口的非客户区(如边框、标题条、系统菜单图标

4、、最大化/最小化/还原按钮、关闭按钮、菜单、工具条、滚动条、状态条)时所产生的鼠标消息。其中,只有客户区鼠标消息是常用的。至于非客户区鼠标消息,除了Windows自己用于系统管理外一般很少使用。在本课程中我们只讨论客户区鼠标消息及其处理。在Windows的SDK编程中,必须将非客户区鼠标消息交给DefWindowProc函数处理。表7-1鼠标事件与消息事件客户区鼠标消息非客户区鼠标消息双击左键WM_LBUTTONDBLCLKWM_NCLBUTTONDBLCLK按下左键WM_LBUTTONDOWNWM_NCLBUTTONDOWN释放左键WM_LBUTTONUPWM_NCLBUTTONUP双击中

5、键WM_MBUTTONDBLCLKWM_NCMBUTTONDBLCLK按下中键WM_MBUTTONDOWNWM_NCMBUTTONDOWN释放中键WM_MBUTTONUPWM_NCMBUTTONUP鼠标移动WM_MOUSEMOVEWM_NCMOUSEMOVE双击右键WM_RBUTTONDBLCLKWM_NCRBUTTONDBLCLK按下右键WM_RBUTTONDOWNWM_NCRBUTTONDOWN释放右键WM_RBUTTONUPWM_NCRBUTTONUP因为有的鼠标没有中键,所以应用程序很少使用与中键有关的三个消息。另外,双击的最大时间间隔可用下列函数获取或设置(默认为500毫秒):UI

6、NTGetDoubleClickTime(VOID);//返回间隔的毫秒数BOOLSetDoubleClickTime(UINTuInterval);//若成功返回非0值其中,uInterval为时间间隔值(毫秒数)。7.1.2响应鼠标消息可以用MFC的类向导,为视图类或对话框类等CCmdTarget类的派生类,添加鼠标消息响应函数。常用的鼠标消息响应函数的原型为:afx_msgvoidOnMouseMove(UINTnFlags,CPointpoint);afx_msgvoidOnLButtonDown(UINTnFlags,CPointpoint);afx_msgvoidOnLButto

7、nUp(UINTnFlags,CPointpoint);14afx_msgvoidOnLButtonDblClk(UINTnFlags,CPointpoint);afx_msgvoidOnRButtonUp(UINTnFlags,CPointpoint);其中的参数:point为鼠标的位置坐标(相对于客户区的左上角)、nFlags为标志参数——可取表7-2中所列的符号常量值(二进制位,可以用“与”来判断,用“

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

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

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