WM_NCHITTEST讯息

【勇芳软件工作室】汉化HomePreviousNext

每当鼠标事件发生时,系统会向包含光标热点的窗口或捕获鼠标的窗口发送WM_NCHITTEST消息。Windows使用此消息来确定是发送客户端区域还是非客户端区域鼠标消息。必须接收鼠标移动和鼠标按钮消息的应用程序必须将WM_NCHITTEST消息传递给DefWindowProc功能。

WM_NCHITTEST消息的【lParam的】参数包含光标热点的屏幕坐标。DefWindowProc函数检查坐标并返回一个用于标识热点位置的命中测试值。命中测试值可以是以下值之一。

热点位置
HTBORDER在没有尺寸边框的窗口的边框
HTBOTTOM在窗口的较低水平边框
HTBOTTOMLEFT在窗口边框的左下角
HTBOTTOMRIGHT在窗口边框的右下角
HTCAPTION在标题栏中
HTCLIENT在客户区
HTCLOSE在关闭按钮。
HTERROR在屏幕背景上或窗口之间的分界线(与HTNOWHERE相同),除了DefWindowProc功能产生系统蜂鸣声以指示错误)
HTGROWBOX在一个大小框(与HTSIZE相同)
HTHELP在帮助按钮。
HTHSCROLL在水平滚动条中
HTLEFT在窗口的左边界
HTMENU在菜单中
HTMAXBUTTON在最大化按钮。
HTMINBUTTON在最小化按钮。
HTNOWHERE在屏幕背景上或窗口之间的分界线上
HTREDUCE在最小化按钮
HTRIGHT在窗口的右边界
HTSIZE在一个大小框(与HTGROWBOX相同)
HTSYSMENU在系统菜单或子窗口中的关闭按钮中
HTTOP在窗口的上部水平边框
HTTOPLEFT在窗口边框的左上角
HTTOPRIGHT在窗口边框的右上角
HTTRANSPARENT在当前由另一个窗口覆盖的窗口中
HTVSCROLL在垂直滚动条中
HTZOOM在最大化按钮

如果光标位于窗口的客户端区域,DefWindowProc将HTCLIENT命中检测值返回给窗口过程。当窗口过程将此代码返回给系统时,Windows将光标热点的屏幕坐标转换为客户端坐标,然后发布相应的客户区域鼠标消息。

当光标热点位于窗口的非客户区域中时,DefWindowProc函数返回其他命中测试值之一。当窗口过程返回其中一个命中测试值时,Windows发布非客户区鼠标消息,将命中测试值放在消息的【wParam中】参数中,光标坐标位于【lParam的】参数中。