WM_NCHITTEST訊息

傳送至視窗,以判斷視窗的哪個部分對應至特定螢幕座標。 例如,當游標移動、按下或放開滑鼠按鈕,或回應對 WindowFromPoint函式的呼叫時,可能會發生這種情況。 如果未擷取滑鼠,訊息就會傳送至游標下方的視窗。 否則,訊息會傳送至擷取滑鼠的視窗。

視窗會透過其 WindowProc 函式接收此訊息。

#define WM_NCHITTEST                    0x0084

參數

wParam

不使用這個參數。

lParam

低序字會指定游標的 x 座標。 座標相對於畫面左上角。

高序字會指定游標的 Y 座標。 座標相對於畫面左上角。

傳回值

DefWindowProc 函式的傳回值是下列其中一個值,表示游標作用點的位置。

傳回碼/值 描述
HTBORDER
18
在沒有重設大小框線的視窗框線中。
HTBOTTOM
15
在可重設大小的視窗的下水準框線中(使用者可以按鼠以垂直調整視窗大小)。
HTBOTTOMLEFT
16
在可重設大小的視窗框線左下角(使用者可以按鼠以對角調整視窗大小)。
HTBOTTOMRIGHT
17
在可重設大小的視窗框線右下角(使用者可以按鼠以對角調整視窗大小)。
TCAPTION
2
在標題列中。
TCLIENT
1
在工作區中。
TCLOSE
20
在 [關閉] 按鈕中。
HTERROR
-2
在螢幕背景或視窗之間的分隔線上(與 HTNOWHERE 相同,不同之處在於 DefWindowProc 函式會產生系統嗶聲來指出錯誤)。
HTGROWBOX
4
在大小方塊中(與 HTSIZE 相同)。
HTHELP
21
在 [ 說明] 按鈕中。
HTHSCROLL
6
在水平滾動條中。
HTLEFT
10
在可重設大小的視窗左框線中(使用者可以按鼠水平調整視窗大小)。
HTMENU
5
在功能表中。
HTMAXBUTTON
9
在 [最大化] 按鈕中。
HTMINBUTTON
8
在 [最小化] 按鈕中。
HTNOWHERE
0
在畫面背景或視窗之間的分隔線上。
HTREDUCE
8
在 [最小化] 按鈕中。
HTRIGHT
11
在可重設大小的視窗右框線中(使用者可以按鼠水平調整視窗大小)。
HTSIZE
4
在大小方塊中(與 HTGROWBOX 相同)。
HTSYSMENU
3
在視窗選單或子視窗的 [ 關閉 ] 按鈕中。
HTTOP
12
在視窗的上水平框線中。
HTTOPLEFT
13
在視窗框線的左上角。
HTTOPRIGHT
14
在視窗框線的右上角。
HTTRANSPARENT
-1
在目前由相同線程中另一個視窗所涵蓋的視窗中(訊息會傳送至相同線程中的基礎視窗,直到其中一個視窗傳回不是 HTTRANSPARENT 的程式代碼為止)。
HTVSCROLL
7
在垂直滾動條中。
HTZOOM
9
在 [最大化] 按鈕中。

備註

使用下列程式代碼來取得水平和垂直位置:

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 [僅限傳統型應用程式]
頁首
Winuser.h (包括 Windowsx.h)

另請參閱

參考

DefWindowProc

GET_X_LPARAM

GET_Y_LPARAM

概念

滑鼠輸入

其他資源

MAKEPOINTS