WM_NCHITTEST消息
发送到窗口以确定窗口的哪个部分对应于特定的屏幕坐标。 例如,当光标移动、按下或释放鼠标按钮或响应对 WindowFromPoint 等函数的调用时,可能会发生这种情况。 如果未捕获鼠标,则会将消息发送到光标下方的窗口。 否则,消息将发送到已捕获鼠标的窗口。
窗口通过其 WindowProc 函数接收此消息。
#define WM_NCHITTEST 0x0084
参数
-
wParam
-
未使用此参数。
-
lParam
-
低序字指定光标的 x 坐标。 坐标相对于屏幕左上角。
高序字指定光标的 y 坐标。 坐标相对于屏幕左上角。
返回值
DefWindowProc 函数的返回值是下列值之一,指示光标热点的位置。
返回代码/值 | 描述 |
---|---|
|
在没有大小调整边框的窗口的边框中。 |
|
在可调整大小的窗口的下水平边框 (用户可以单击鼠标以垂直调整窗口大小) 。 |
|
在可调整大小的窗口边框的左下角, (用户可以单击鼠标以) 对角线调整窗口大小。 |
|
在可调整大小的窗口边框的右下角 (用户可以单击鼠标以) 对角线调整窗口大小。 |
|
在标题栏中。 |
|
在工作区中。 |
|
在 “关闭 ”按钮中。 |
|
在屏幕背景或窗口之间的分隔线上, (与 HTNOWHERE 相同,只不过 DefWindowProc 函数会发出系统蜂鸣声以指示) 错误。 |
|
在大小框中, (与 HTSIZE) 相同。 |
|
在 “帮助 ”按钮中。 |
|
在水平滚动条中。 |
|
在可调整大小的窗口的左边框 (用户可以单击鼠标以水平调整窗口大小) 。 |
|
在菜单中。 |
|
在 “最大化 ”按钮中。 |
|
在 “最小化 ”按钮中。 |
|
在屏幕背景上或窗口之间的分隔线上。 |
|
在 “最小化 ”按钮中。 |
|
在可调整大小的窗口的右边框 (用户可以单击鼠标以水平调整窗口大小) 。 |
|
在大小框中 (与 HTGROWBOX) 相同。 |
|
在窗口菜单或子窗口的 “关闭 ”按钮中。 |
|
在窗口的上水平边框中。 |
|
在窗口边框的左上角。 |
|
在窗口边框的右上角。 |
|
在同一线程 (当前由另一个窗口覆盖的窗口中,消息将发送到同一线程中的基础窗口,直到其中一个窗口返回不是 HTTRANSPARENT) 的代码。 |
|
在垂直滚动条中。 |
|
在 “最大化 ”按钮中。 |
备注
使用以下代码获取水平和垂直位置:
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
如上所述,x 坐标在返回值的低阶 短 ;y 坐标位于高阶 短 (都表示 有符号 值,因为它们可以在具有多个监视器) 的系统上采用负值。 如果返回值分配给变量,则可以使用 MAKEPOINTS 宏从返回值获取 POINTS 结构。 还可以使用 GET_X_LPARAM 或 GET_Y_LPARAM 宏提取 x 或 y 坐标。
重要
请勿使用 LOWORD 或 HIWORD 宏提取光标位置的 x 和 y 坐标,因为这些宏在具有多个监视器的系统上返回不正确的结果。 具有多个监视器的系统可以具有负 x 和 y 坐标, LOWORD 和 HIWORD 会将坐标视为无符号数量。
Windows Vista: 创建包含标准标题按钮的自定义帧时,应首先将此消息传递到 DwmDefWindowProc 函数。 这使桌面窗口管理器 (DWM) 可为字幕按钮提供命中测试。 如果 DwmDefWindowProc 不处理消息,则可能需要进一步处理 WM_NCHITTEST 。
要求
要求 | Value |
---|---|
最低受支持的客户端 |
Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 |
Windows 2000 Server [仅限桌面应用] |
标头 |
|
另请参阅
-
引用
-
概念性
-
其他资源