资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,6,章 鼠标程序设计,本章主要内容,:,鼠标消息处理,使用鼠标画点,使用鼠标画线,1,6.1,鼠标消息处理,鼠标是重要的输入设备。在,Windows,图形操作系统中,鼠标发挥了强大的威力,因而对它的控制与使用越来越受到用户的重视。,Windows,提供了统一的鼠标编程接口,该接口是对通过鼠标消息实现的。当用户移动鼠标,按下或释放鼠标按键时,都会触发鼠标消息。根据鼠标所在位置的不同,鼠标消息可以分为,客户区鼠标消息和非客户区鼠标消息,。,2,(1),客户区鼠标消息,当用户移动鼠标通过应用程序窗口的客户区时,应用程序会接收一连串,WM_MOUSEMOVE,消息,这些消息不仅告诉应用程序鼠标在移动,还告诉应用程序触发消息时鼠标的位置。,当鼠标移动到应用程序窗口的客户区外面时,应用程序则停止接收客户区鼠标消息,大部分应用程序不处理非客户区鼠标消息。,3,常用客户区鼠标消息,鼠标移动,WM_MOUSEMOVE,在客户区移动,鼠标左键,WM_LBUTTONUP,左键释放,WM_LBUTTONDOWN,左键 按下,WM_LIBUTTONDBCLK,鼠标双击,鼠标右键,WM_RBUTTONUP,右键释放,WM_RBUTTONDOWN,鼠标右键 按下,WM_RBUTTONDBCLK,鼠标右键双击,2,4,(2),非客户区鼠标消息,在应用程序窗口中,除了客户区以外的部分都是非客户区,当鼠标通过非客户区时,就会触发与客户区鼠标消息类似的非客户区鼠标消息,大部分应用程序不处理非客户区鼠标消息,。,MFC,把客户区鼠标消息的处理函数封装在,CView,类中,这些函数都是虚函数,其中常用的客户区鼠标消息处理函数如下,:,afx,_,msg,void OnMouseMove(UINT,nFlag,CPoint,point);,鼠标消息处理函数原型中的,nFlag,表示按下的虚拟键,,point,表示当前鼠标坐标。,5,(3),加处理客户区鼠标消息方法的函数,4,6,(4),编辑函数,5,7,修改函数如下:,6,8,鼠标和键盘组合的标志,point.x,point.y,为鼠标光标的坐标,7,MK_SHIFT,表示,shift+,左键,9,(5),编译,运行,在客户区鼠标左键 按下时:,处理鼠标左键消息代码的位置:,(三处),8,10,在头文件,DrawView.h,中,9,函数说明,11,在文件,DrawView.cpp,中,消息映射宏,10,12,在文件,DrawView.cpp,中,定义函数体,11,13,Shift,键,+,鼠标组合,也,可以,MK_CONTROL+,鼠标组合,12,14,Shift,键与鼠标组合,13,15,6.2,使用鼠标画点,加成员变量,在,Classview,击右键,14,16,双击看定义,15,17,双击看初始化,16,18,初始化,17,19,置,画点壮态,18,20,置,画点壮态,置,色,19,21,20,22,6.3,使用鼠标画线,处理的鼠标消息是:,WM_LBUTTONDOWN,单击左键,WM_MOUSEMOVE,移动左键,WM_LBUTTONDOWN,单击左键,(,1,),.,在,DrawView,中添加两个标注线段起点坐标的整形变量及画线步数的整型变量。,m_nStartX,x,坐标,m_nStartY,y,坐标,m_nStep,;0,起点,,1,终点,21,23,右,键,22,24,23,3,变量,25,为,变量赋初值,:,双击,24,26,25,初值,27,修改成员函数,:,26,28,27,29,编译运行,:,28,也可改变笔的属性,:,30,定模式及风格,29,31,编译运行:,橡皮线工作原理,30,32,加,WM_MOUSEMOVE,消息处理成员函数,:,31,33,编辑函数,:,32,34,添加记录终点坐标的成员变量,:,34,35,初始化变量,:,35,36,初始化变量,:,36,37,37,画新线,擦旧线,置线条模式,38,37,39,37,同,相轴,追踪,40,37,剖面振幅异常段,41,
展开阅读全文