设为首页 加入收藏

TOP

滑鼠(十三)
2010-12-30 21:11:57 来源: 作者: 【 】 浏览:27860
Tags:滑鼠
21个滑鼠讯息中的20个,最後一个讯息是WM_NCHITTEST,它代表「非显示区域命中测试」。此讯息优先於所有其他的显示区域和非显示区域滑鼠讯息。lParam参数含有滑鼠位置的x和y萤幕座标,wParam参数没有用。

Windows应用程式通常把这个讯息传送给DefWindowProc,然後Windows用WM_NCHITTEST讯息产生与滑鼠位置相关的所有其他滑鼠讯息。对於非显示区域滑鼠讯息,在处理WM_NCHITTEST时,从DefWindowProc传回的值将成为滑鼠讯息中的wParam参数,这个值可以是任意非显示区域滑鼠讯息的wParam值再加上以下内容:

HTCLIENT

HTNOWHERE

HTTRANSPARENT

HTERROR

显示区域

不在视窗中

视窗由另一个视窗覆盖

使DefWindowProc产生警示用的哔声

如果DefWindowProc在其处理WM_NCHITTEST讯息後传回HTCLIENT,那么Windows将把萤幕座标转换为显示区域座标并产生显示区域滑鼠讯息。

如果您还记得我们如何通过拦截WM_SYSKEYDOWN讯息来停用所有的系统键盘功能,那么您可能会想我们可否通过拦截滑鼠讯息完成类似的事情。完全可以!只要您在视窗讯息处理程式中包含以下几条叙述:

case WM_NCHITTEST:
return (LRESULT) HTNOWHERE ;

就可以有效地禁用您视窗中的所有显示区域和非显示区域滑鼠讯息。这样一来,当滑鼠在您的视窗(包括系统功能表图示、缩放按钮以及关闭按钮)中时,滑鼠按键将会失效。

从讯息产生讯息
 

Windows用WM_NCHITTEST讯息产生所有其他滑鼠讯息,这种由讯息引出其他讯息的想法在Windows中是很普遍的。让我们来举个例子。您知道,如果您在一个Windows程式的系统功能表图示上双击一下,那么程式将会终止。双击产生一系列的WM_NCHITTEST讯息。由於滑鼠定位在系统功能表图示上,因此DefWindowProc将传回HTSYSMENU的值,并且Windows把wParam等於HTSYSMENU的WM_NCLBUTTONDBLCLK讯息放在讯息伫列中。

视窗讯息处理程式通常把滑鼠讯息传递给DefWindowProc,当DefWindowProc接收到wParam

首页 上一页 10 11 12 13 14 15 16 下一页 尾页 13/50/50
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇计时器 下一篇键盘

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: