Windows编程之鼠标

     发明鼠标的人真了不起,或许是很懒才能发明这种设备吧,:)。PF之……
文章中说鼠标刚开始并不是很重要,人们更喜欢用键盘,其实我也很喜欢用键盘操作,比如打开计算器,我更喜欢用键盘的win+R,然后输入“calc”打开计算器,而不是用鼠标点“开始”->“程序”->“附件”->“计算器”。但是玩CS的时候就不同了。呵呵……

有鼠标是非常好的,但是我们不能一厢情愿的假设客户安装了鼠标,加入客户没有安装鼠标或者说鼠标坏了,当然这可能不经常发生,但是的确有这种可能,所以我们的程序应该考虑到这种情况。

函数 fMouse = GetSystemMetrics (SM_MOUSEPRESENT) ;
用来确定是否安装了鼠标,如果安装了,则返回非0值,否则返回0。【Windows 98在没有装鼠标的情况下返回2】。

鼠标中的术语:
  •  Clicking 按下并放开一个鼠标按键。
     
  •  Double-clicking 快速按下并放开鼠标按键两次。
     
  •  Dragging 按住鼠标按键并移动鼠标。
  • 鼠标的E文单词是mouse,那么它的复数形式是什么?
    或许用mouse devices是一个参考。

    x = LOWORD (lParam) ;//鼠标的x坐标
    y = HIWORD (lParam) ;//y坐标
    确定为双击,则这两次单击必须发生在其相距的实际位置十分接近的状况下(内定范围是一个平均系统字体字元的宽,半个字元的高),并且发生在指定的时间间隔(称为「双击速度」)内.
    要想收到双击的消息,必须在RegesterClass的时候在style中包含CS_DBCLCKS识别字。

    wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ;

    双击时的消息是:

    WM_LBUTTONDOWN

    WM_LBUTTONUP

    WM_LBUTTONDBLCLK

    WM_LBUTTONUP

也就是说双击将首先处理单击消息,然后再处理双击消息。比如单击应用程序图标是“选中”,而双击该图标就是先“选中”,然后“运行”。
命中测试消息WM_NCHITTEST:
此消息优先于所有的显示区域和非显示区域的消息。lParam含有x和y 的屏幕坐标,wParam没有用。

拦截鼠标消息:
case WM_NCHITTEST:
   return (LRESULT) HTNOWHERE ;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值