Visual C++面向对象与可视化程序设计_windows_API_mouse课件.ppt

Visual C++面向对象与可视化程序设计_windows_API_mouse课件.ppt

ID:57059737

大小:177.50 KB

页数:29页

时间:2020-07-30

Visual C++面向对象与可视化程序设计_windows_API_mouse课件.ppt_第1页
Visual C++面向对象与可视化程序设计_windows_API_mouse课件.ppt_第2页
Visual C++面向对象与可视化程序设计_windows_API_mouse课件.ppt_第3页
Visual C++面向对象与可视化程序设计_windows_API_mouse课件.ppt_第4页
Visual C++面向对象与可视化程序设计_windows_API_mouse课件.ppt_第5页
资源描述:

《Visual C++面向对象与可视化程序设计_windows_API_mouse课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、VisualC++面向对象与可视化程序设计--------WINDOWSAPI之mouse6.3鼠标在应用程序中的应用鼠标作为定位输入设备,通过鼠标单击、双击和拖动功能,用户可以很容易地操作基于Windows图形界面的应用程序。Windows中通过光标来指示当前鼠标的位置,在Windows操作系统中预定义了几种光标,并在Windows.h头文件中加以定义,例如,下面的语句为窗口类wndclassWNDCLASSwndclass;…wndclass.hCursor=LoadCursor(hThislnst,IDC_WAIT);…此外,还可在应用程序中调用Lo

2、adCursor函数改变光标形式用户自定义光标自定义光标保存在扩展名为.cur的文件中光标名CURSOR光标文件(.cur)采用自定义光标时,需在资源文件中定义光标资源加载光标资源(常在定义窗口类时进行)LoadCursor(hThisInst,lpszCursorname)当前实例句柄当前光标Windows只把键盘消息发送给拥有输入焦点的窗口。鼠标消息与此不同:只要鼠标跨越窗口或者在某窗口中按下鼠标按键,那么窗口消息处理程序就会收到鼠标消息,而不管该窗口是否活动或者是否拥有输入焦点。Windows为鼠标定义了21种消息,不过,其中有11个消息和显示区域无

3、关(「非显示区域」消息),Windows程序经常忽略这些消息。当鼠标移过窗口的显示区域时,窗口消息处理程序收到WM_MOUSEMOVE消息。当把鼠标移过窗口的显示区域时,Windows并不为鼠标的每个可能的像素位置都产生一个WM_MOUSEMOVE消息。程序接收到WM_MOUSEMOVE消息的次数,依赖于鼠标硬件,以及窗口消息处理程序在处理鼠标移动消息时的速度。换句话说,Windows不能用未处理的WM_MOUSEMOVE消息来填入消息队列。当在窗口的显示区域中按下或者释放一个鼠标按键时,窗口消息处理程序会接收到下面这些消息:WM_LBUTTONDOWNW

4、M_LBUTTONUPWM_LBUTTONDBLCLKWM_MBUTTONDOWNWM_MBUTTONUPWM_MBUTTONDBLCLKWM_RBUTTONDOWNWM_RBUTTONUPWM_RBUTTONDBLCLK显示区域鼠标消息如果在非活动窗口的显示区域中按下鼠标左键,Windows将把活动窗口改为在其中按下鼠标按键的窗口,然后把WM_LBUTTONDOWN消息送到该窗口消息处理程序。当窗口消息处理程序得到WM_LBUTTONDOWN消息时,程序就可以安全地假定该窗口是活动化的了。不过,窗口消息处理程序可能在未接收到WM_LBUTTONDOWN消

5、息的情况下先接收到了WM_LBUTTONUP的消息。如果在一个窗口中按下鼠标按键,然后移动到使用者窗口释放它,就会出现这种情况。当鼠标按键在另一个窗口中被释放时,窗口消息处理程序只能接收到WM_LBUTTONDOWN消息,而没有相应的WM_LBUTTONUP消息。这些规则有两个例外:窗口消息处理程序可以「拦截鼠标」并且连续地接收鼠标消息,即使此时鼠标在该窗口显示区域之外。如果正在显示一个系统模态消息框或者系统模态对话框,那么其它程序就不能接收鼠标消息。当系统模态消息框或者对话框活动时,禁止切换到其它窗口或者程序。一个显示系统模态消息框的例子,是当关闭Win

6、dows时。鼠标消息lParam包含了鼠标位置低位包含鼠标位置的x坐标值高位包含鼠标位置的y坐标wParam包含了指示各种虚键状态的值相当于窗口的左上角为原点的坐标值对于所有这些消息来说,其lParam值均含有鼠标的位置:低字组为x坐标,高字组为y坐标,这两个坐标是相对于窗口显示区域左上角的位置。可以用LOWORD和HIWORD宏来提取这些值:x=LOWORD(lParam);y=HIWORD(lParam);wParam的值指示鼠标按键以及Shift和Ctrl键的状态。可以使用表头文件WINUSER.H中定义的位屏蔽来测试wParam。MK前缀代表「鼠标

7、按键」。对于鼠标消息的处理要对Shift和Ctrl键进行监测caseWM_LBUTTONDOWN://按下鼠标左键if((wParam&MK_CONTROL)&&(wParam&MK_SHIFT))…//Shift和Ctrl键都被按下break;caseWM_LBUTTONUP://释放鼠标左键…break;…caseWM_LBUTTONDOWN://按下鼠标左键…break;caseWM_LBUTTONUP://释放鼠标左键…break;…不监测if(wParam&MK_SHIFT){if(wParam&MK_CONTROL){//按下了Shift和Ct

8、rl键}else{//按下了Shift键}}else{if(wPa

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

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

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