WINDOWS 程序设计教程(9章).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 鼠标程序编程基础 鼠标是一种输入设备,是一种必要的选择设备。虽然拔下鼠标,Windows仍然可以执行,但是试图不用鼠标来使用Windows就像用脚趾来弹钢琴一样,是非常别扭的。通常认为,键盘便于输入与操作文字变量,而鼠标则便于画图和操作图形对象。  Windows 98支援单键、双键或者三键鼠标,还可以使用摇杆或者光笔来模拟单键鼠标。 9.1.1 GetSystem Metrics函数的应用 理论上,可以用GetSystemMetrics函数来确认鼠标是否存在: fMouse = GetSystemMetrics (SM_MOUSEPRESENT) ;//前缀SM_代表系统信息 在 Windows NT中,这是可用的,然而,在Windows 98中,这个函数不可用 。如果要确定所安装鼠标的按键个数,可使用 cButtons = GetSystemMetrics (SM_CMOUSEBUTTONS) ; 鼠标游标上有一个像素点,它称为鼠标游标的“热点”,这个“热点”指向显示器上一个精确地址,这个地址称为鼠标地址。 。 9.1.2预先定义的鼠标游标 Windows支援好几种预先定义的鼠标游标。最常见的鼠标游标是IDC_ARROW。 Windows和DOS中称呼是不一样的,Windows中游标是指鼠标游标,而DOS中把屏幕上显示的指示键盘输入地址的符号称为游标,键盘的游标在Windows中称为插入符号。 9.1.3鼠标消息与键盘消息的区别 Windows只能把键盘消息发送给拥有输入焦点的窗口函数。而鼠标消息与此不同:只要鼠标跨越窗口或者在某窗口中按下鼠标按键,那么窗口函数就会收到鼠标消息,而不管该窗口是否活动或者是否拥有输入焦点。Windows为鼠标定义了21种消息,不过,其中11个消息和显示区域无关,它称之为”非显示区域”消息,Windows应用程序可以不考虑这些消息。 9.1.4显示区域内的鼠标消息及其处理方法 显示区域内的鼠标消息是怎么形成的呢?由鼠标硬件和鼠标驱动程序把鼠标事件(或称鼠标动作)变换成为扫描码,再由Windows操作系统把扫描码变换成为鼠标虚拟键码,这一点和键盘的处理是一样的。鼠标跨越窗口的显示区域也是一个鼠标动作,窗口函数会收到WM_MOUSEMOVE鼠标消息当在窗口的显示区域中按下或者释放一个鼠标按键时,根据按键的左,中,右窗口函数会接收到下面这些消息: 9.1.4显示区域内的鼠标消息及其处理方法 鼠标消息及其处理方法 9.1.4显示区域内的鼠标消息及其处理方法 同时按下左键和CONTROL或SHIFT键也能产生WM_LBUTTONDOWN消息。所以,当按下左,中,右键时Windows分别产生WM_LBUTTONDOWN, WM_MBUTTONDOWN, WM_RBUTTONDOWN消息。在窗口类的定义中有一个style项,只有把它设置成CS_DBLCLKS(CS_表示类式样),窗口函数才能接收双击消息。 在按下按键时除了产生按键消息外,同时还有消息参数,其wParam是按下去的鼠标按键的虚拟键码。其lParam是鼠标地址:lParam低字组是x坐标,高字组是y坐标,它们是以显示区域左上角为坐标原点的坐标值。可以用LOWORD和HIWORD宏定义函数来提取这两个坐标值: x = LOWORD (lParam) ; y = HIWORD (lParam) ; 9.1.4显示区域内的鼠标消息及其处理方法 鼠标按键的虚拟键码识别字 9.1.4显示区域内的鼠标消息及其处理方法 鼠标消息还可以同时按下某键盘上的按键和点击鼠标时产生,检测的方法如下:把wparam中的鼠标虚拟键码和某按键的虚拟键码“相与”。例如。当鼠标左键桉下时也按下了Shift键,窗口函数会收到WM_LBUTTONDOWN消息。可以用下式检查出到底WM_LBUTTONDOWN消息是怎样产生的。 wparam MK_SHIFT 是TRUE(非0),就表示WM_LBUTTONDOWN消息是有鼠标左键按下时也按下了Shift键所产生的。 9.1.5鼠标消息在其他情况下的处理 当把鼠标移过窗口显示区域时,Windows并不为鼠标在显示区域内的每个可能的像素地址都产生一个WM_MOUSEMOVE消息。 那么,应用程序到底产生多少个WM_MOUSEMOVE消息呢?这依赖於鼠标硬件,以及应用程序的窗口函数在处理WM_MOUSEMOVE消息的速度 。如果在非活动窗口的显示区域中按下鼠标左键,Windows将把非活动窗口改为活动窗口 。 9.1.6鼠标消息的处理例子 请见(CONNECT程序) ( 程序\9 CONNECT) 9.2 按键及其处理 Shift, Ctrl键的处理 if (wParam MK_SHI

文档评论(0)

***** + 关注
实名认证
文档贡献者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档