WINDOW程序设计第9章

WINDOW程序设计第9章

ID:45392094

大小:238.81 KB

页数:19页

时间:2019-11-12

WINDOW程序设计第9章_第1页
WINDOW程序设计第9章_第2页
WINDOW程序设计第9章_第3页
WINDOW程序设计第9章_第4页
WINDOW程序设计第9章_第5页
资源描述:

《WINDOW程序设计第9章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第9章鼠标程序编程基础鼠标是一种输入设备,是一种必要的选择设备。虽然拔下鼠标,Windows仍然可以执行,但是试图不用鼠标来使用Windows就像用脚趾来弹钢琴一样,是非常别扭的。通常认为,键盘便于输入与操作文字变量,而鼠标则便于画图和操作图形对象。Windows98支援单键、双键或者三键鼠标,还可以使用摇杆或者光笔来模拟单键鼠标。9.1.1GetSystemMetrics函数的应用理论上,可以用GetSystemMetrics函数来确认鼠标是否存在:fMouse=GetSystemMetrics(SM_MOU

2、SEPRESENT);//前缀SM_代表系统信息在WindowsNT中,这是可用的,然而,在Windows98中,这个函数不可用。如果要确定所安装鼠标的按键个数,可使用cButtons=GetSystemMetrics(SM_CMOUSEBUTTONS);鼠标游标上有一个像素点,它称为鼠标游标的“热点”,这个“热点”指向显示器上一个精确地址,这个地址称为鼠标地址。。9.1.2预先定义的鼠标游标Windows支援好几种预先定义的鼠标游标。最常见的鼠标游标是IDC_ARROW。Windows和DOS中称呼是不一样的

3、,Windows中游标是指鼠标游标,而DOS中把屏幕上显示的指示键盘输入地址的符号称为游标,键盘的游标在Windows中称为插入符号。9.1.3鼠标消息与键盘消息的区别Windows只能把键盘消息发送给拥有输入焦点的窗口函数。而鼠标消息与此不同:只要鼠标跨越窗口或者在某窗口中按下鼠标按键,那么窗口函数就会收到鼠标消息,而不管该窗口是否活动或者是否拥有输入焦点。Windows为鼠标定义了21种消息,不过,其中11个消息和显示区域无关,它称之为”非显示区域”消息,Windows应用程序可以不考虑这些消息。9.1.4

4、显示区域内的鼠标消息及其处理方法显示区域内的鼠标消息是怎么形成的呢?由鼠标硬件和鼠标驱动程序把鼠标事件(或称鼠标动作)变换成为扫描码,再由Windows操作系统把扫描码变换成为鼠标虚拟键码,这一点和键盘的处理是一样的。鼠标跨越窗口的显示区域也是一个鼠标动作,窗口函数会收到WM_MOUSEMOVE鼠标消息当在窗口的显示区域中按下或者释放一个鼠标按键时,根据按键的左,中,右窗口函数会接收到下面这些消息:请见教材程序9鼠标消息及其处理方法.doc9.1.5鼠标消息在其他情况下的处理当把鼠标移过窗口显示区域时,Wi

5、ndows并不为鼠标在显示区域内的每个可能的像素地址都产生一个WM_MOUSEMOVE消息。那么,应用程序到底产生多少个WM_MOUSEMOVE消息呢?这依赖於鼠标硬件,以及应用程序的窗口函数在处理WM_MOUSEMOVE消息的速度。如果在非活动窗口的显示区域中按下鼠标左键,Windows将把非活动窗口改为活动窗口。9.1.6鼠标消息的处理例子请见(CONNECT程序) (教材程序99-1CONNECT.doc)9.2按键及其处理Shift,Ctrl键的处理请见教材程序9Shift,control的处理

6、.doc为单键鼠标提供右键的处理方法请见教材程序9为单键鼠标提供右键的处理方法.doc9.2.3如何使用GetKeyState函数了解鼠标按键状态必须注意:只有在处理WM_LBUTTONDOWN消息期间,GetKeyState只能返回目前正在处理的鼠标按键或者Shift键的状态。否则,GetKeyState是不能用它来检查键的状态的。例如:while(GetKeyState(VK_LBUTTON)>=0)请不要这样做!!!,因为VK_LBUTTON仅表示虚拟键码,至于它是否桉下是不知道的,所以不能用GetK

7、eyState(VK_LBUTTON)求得VK_LBUTTON的状态。当桉下这个VK_LBUTTON按键时必定产生WM_LBUTTONDOWN消息,所以,只有在处理WM_LBUTTONDOWN消息期间,才有可能应用while(GetKeyState(VK_LBUTTON)>=0),才能知道VK_LBUTTON桉下没有。;9.2.4双击鼠标按键及其处理两次单击是否符合下面两个条件:①两次单击发生的地址十分接近。两次单击发生的地址内定为横向范围超过系统字体字符的平均宽,纵向范围不超过半个字符的高。②两次单击发生的时

8、间间隔必须在规定的时间范围内。用户可以在Windows系统的“控制台”中改变两次单击的时间间隔。双击的设置如下:wndclass.style=CS_HREDRAW

9、CS_VREDRAW

10、CS_DBLCLKS;9.3非显示区域鼠标消息及其处理在窗口的显示区域内移动或按下鼠标按键时,将产生10种消息。如果鼠标在窗口的显示区域之外但还在窗口内(即非显示区域)移动或按下鼠标按键时,Window

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

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

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