鱼C论坛

 找回密码
 立即注册
查看: 2552|回复: 0

[API档案] WM_NCBUTTONDBLCLK 消息

[复制链接]
发表于 2016-6-19 17:32:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
注1:本文档由 Diu 翻译,小甲鱼校对。

注2:由于 WM_NCLBUTTONDBLCLK、WM_NCMBUTTONDBLCLK 和 WM_NCRBUTTONDBLCLK 三个消息基本一致(除了区分左中右),所以进行了合并。

WM_NCLBUTTONDBLCLK 消息原文链接 -> 传送门

WM_NCMBUTTONDBLCLK 消息原文链接 -> 传送门

WM_NCRBUTTONDBLCLK 消息原文链接 -> 传送门

消息含义:

当光标在窗口的非客户区域,用户双击鼠标(左 | 中 | 右)键时便会发送该消息。消息会发送给包含该光标的窗口。如果窗口没有捕获鼠标,则该消息将不会被发送。

窗口通过自己的 WindowProc 函数接收该消息。


消息定义:
#define WM_NCLBUTTONDBLCLK              0x00A3
#define WM_NCMBUTTONDBLCLK              0x00A9
#define WM_NCRBUTTONDBLCLK              0x00A6

参数解析:

wParam:DefWindowProc 函数处理 WM_NCHITTEST 消息返回的点击测试值。参见 WM_NCHITTEST 消息查看一系列点击测试值。

lParam:包含光标横坐标和纵坐标的 POINTS 结构。坐标是相对于屏幕的左上角的。


返回值:

如果处理了这个消息,应用程序应返回零。


备注:

1. 你应该使用 GET_X_LPARAMGET_Y_LPARAM 宏来从 lParam 中提取光标的横坐标与纵坐标:
xPos = GET_X_LPARAM(lParam);  
yPos = GET_Y_LPARAM(lParam);
重要:不要使用 LOWORDHIWORD 宏来获取鼠标的 x 坐标与 y 坐标,因为这些宏在具有多个显示器的系统上会返回不正确的结果。有多个显示器的系统能有负的 x 坐标和 y 坐标,而 LOWORDHIWORD 宏将坐标看作是无符号的量。

2. 默认情况下,DefWindowProc 函数通过检测特定的点来找到光标的位置,并且执行合适的动作。如果合适的话,DefWindowProc 函数将发送 WM_SYSCOMMAND 消息到该窗口。

3. 窗口并不需要 CS_DBLCLKS 窗口风格来接收(WM_NCLBUTTONDBLCLK | WM_NCMBUTTONDBLCLK | WM_NCRBUTTONDBLCLK)消息。

4. 当用户按下,释放,并且在系统双击时间限制范围之内再次按下时,系统便会产生(WM_NCLBUTTONDBLCLK | WM_NCMBUTTONDBLCLK | WM_NCRBUTTONDBLCLK)消息。

双击鼠标按键事实上会依次产生下边四个消息:
  • (WM_NCLBUTTONDOWN | WM_NCMBUTTONDOWN | WM_NCRBUTTONDOWN)
  • (WM_NCLBUTTONUP | WM_NCMBUTTONUP | WM_NCRBUTTONUP)
  • (WM_NCLBUTTONDBLCLK | WM_NCMBUTTONDBLCLK | WM_NCRBUTTONDBLCLK)
  • (WM_NCLBUTTONUP | WM_NCMBUTTONUP | WM_NCRBUTTONUP)


需求:

Minimum supported client Windows 2000 专业版 [仅桌面应用程序]
Minimum supported server Windows 2000 服务器版 [仅桌面应用程序]
Header Winuser.h (包含于 Windows.h)


【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 02:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表