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识别字。


双击时的消息是:

WM_LBUTTONDOWN

WM_LBUTTONUP

WM_LBUTTONDBLCLK

WM_LBUTTONUP

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

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



阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页