WM_NCHITTEST メッセージ

特定の画面座標に対応するウィンドウの部分を決定するために、ウィンドウに送信されます。 たとえば、カーソルが移動した場合、マウス ボタンを押したり離したりした場合、または WindowFromPoint などの関数の呼び出しに応じる場合に、これが発生することがあります。 マウスがキャプチャされない場合、メッセージはカーソルの下のウィンドウに送信されます。 それ以外の場合、メッセージはマウスをキャプチャしたウィンドウに送信されます。

ウィンドウは、WindowProc 関数を介してこのメッセージを受け取ります。

#define WM_NCHITTEST                    0x0084

パラメーター

wParam

このパラメーターは使用されません。

lParam

下位ワードは、カーソルの x 座標を指定します。 座標は画面の左上隅を基準にしています。

上位ワードはカーソルの y 座標を指定します。 座標は画面の左上隅を基準にしています。

戻り値

DefWindowProc 関数の戻り値は、カーソルのホット スポットの位置を示す次のいずれかの値です。

リターン コード/戻り値 説明
HTBORDER
18
サイズ変更の境界線がないウィンドウの境界線内。
HTBOTTOM
15
サイズ変更可能なウィンドウの下部の水平方向の境界線内 (ユーザーはマウスをクリックして垂直方向にウィンドウのサイズを変更できます)。
HTBOTTOMLEFT
16
サイズ変更可能なウィンドウの境界線の左下隅 (ユーザーはマウスをクリックして斜め方向にウィンドウのサイズを変更できます)。
HTBOTTOMRIGHT
17
サイズ変更可能なウィンドウの境界線の右下隅 (ユーザーはマウスをクリックしてウィンドウの斜め方向にサイズを変更できます)。
HTCAPTION
2
タイトル バー内。
HTCLIENT
1
クライアント領域内。
HTCLOSE
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
サイズ ボックス内 (HTSIZE と同じ)。
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 座標は戻り値の下位 short になり、y 座標は上位 short になります (複数のモニターを持つシステムでは負の値を取ることができるため、両方とも "符号付き" の値を表します)。 戻り値が変数に割り当てられている場合は、MAKEPOINTS マクロを使用して戻り値から POINTS 構造体を取得できます。 また、GET_X_LPARAM マクロまたは GET_Y_LPARAM マクロを使用して、x 座標または y 座標を抽出することもできます。

重要

LOWORD マクロまたは HIWORD マクロを使ってカーソル位置の x 座標と y 座標を抽出しないでください。これらのマクロは、複数のモニターを持つシステム上で正しくない結果を返します。 複数のモニターを持つシステムは負の x 座標と y 座標を持つ場合があり、LOWORDHIWORD は座標を符号なし数量として扱います。

Windows Vista: 標準のキャプション ボタンを含むカスタム フレームを作成する場合、このメッセージはまず DwmDefWindowProc 関数に渡す必要があります。 これにより、デスクトップ ウィンドウ マネージャー (DWM) はキャプション ボタンのヒット テストを提供できます。 DwmDefWindowProc がメッセージを処理しない場合は、WM_NCHITTEST の処理がさらに必要になる場合があります。

要件

要件 Value
サポートされている最小のクライアント
Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー
Winuser.h (Windowsx.h を含む)

関連項目

リファレンス

DefWindowProc

GET_X_LPARAM

GET_Y_LPARAM

Conceptual

マウス入力

その他のリソース

MAKEPOINTS

POINTS