滑鼠(十二)

2010-12-30 21:11:57 · 作者: · 浏览: 28211
WindowProc,从而使Windows执行系统功能。就这方面来说,非显示区域滑鼠讯息类似於系统键盘讯息WM_SYSKEYDOWN、WM_SYSKEYUP和WM_SYSCHAR。

非显示区域滑鼠讯息几乎完全与显示区域滑鼠讯息相对应。讯息中含有字母「NC」以表示是非显示区域讯息。如果滑鼠在视窗的非显示区域中移动,那么视窗讯息处理程式会接收到WM_NCMOUSEMOVE讯息。滑鼠按键产生如表7-2所示的讯息。

表7-2
按下释放
按下(双击) WM_NCLBUTTONDOWN WM_NCLBUTTONUP WM_NCLBUTTONDBLCLK WM_NCMBUTTONDOWN WM_NCMBUTTONUP WM_NCMBUTTONDBLCLK WM_NCRBUTTONDOWN WM_NCRBUTTONUP WM_NCRBUTTONDBLCLK

对非显示区域滑鼠讯息,wParam和lParam参数与显示区域滑鼠讯息的wParam和lParam参数不同。wParam参数指明移动或者按滑鼠按键的非显示区域。它设定为WINUSER.H中定义的以HT开头的识别字之一(HT表示「命中测试」)。

lParam参数的低位元word为x座标,高位元word为y座标,但是,它们是萤幕座标,而不是像显示区域滑鼠讯息那样指的是显示区域座标。对萤幕座标,显示器左上角的x和y的值为0。当往右移时x的值增加,往下移时y的值增加(见图7-2)。

您可以用两个Windows函式将萤幕座标转换为显示区域座标或者反之:

ScreenToClient (hwnd, &pt) ;
ClientToScreen (hwnd, &pt) ;

这里pt是POINT结构。这两个函式转换了保存在结构中的值,而且没有保留以前的值。注意,如果萤幕座标点在视窗显示区域的上面或者左边,显示区域座标x或y值就是负值。


 

图7-2 萤幕座标与客户显示区域座标

命中测试讯息
 

如果您数一下,就可以知道我们已经介绍了