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。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 |
Windows 2000 Server [仅限桌面应用] |
标头 |
|
另请参阅
-
引用
-
Conceptual
-
其他资源