WM_LBUTTONDOWN メッセージ

カーソルがウィンドウのクライアント領域内にあるときに、マウスの左ボタンを押すと投稿されます。 マウスがキャプチャされない場合、メッセージはカーソルの下のウィンドウに投稿されます。 それ以外の場合、メッセージはマウスをキャプチャしたウィンドウに投稿されます。

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

#define WM_LBUTTONDOWN                  0x0201

パラメーター

wParam

さまざまな仮想キーが下がっているかどうかを示します。 このパラメーターには、次の値のいずれかを指定できます。

Value 意味
MK_CONTROL
0x0008
CTRL キーが押されています。
MK_LBUTTON
0x0001
マウスの左ボタンが押されています。
MK_MBUTTON
0x0010
マウスの中央ボタンが押されています。
MK_RBUTTON
0x0002
マウスの右ボタンが押されています。
MK_SHIFT
0x0004
Shift キーが押されています。
MK_XBUTTON1
0x0020
最初の X ボタンが押されています。
MK_XBUTTON2
0x0040
2 つ目の X ボタンが押されています。

lParam

下位ワードは、カーソルの x 座標を指定します。 座標は、クライアント領域の左上隅を基準にしています。

上位ワードは、カーソルの y 座標を指定します。 座標は、クライアント領域の左上隅を基準にしています。

戻り値

アプリケーションでこのメッセージを処理する場合は、0 を返す必要があります。

LRESULT CALLBACK WndProc(_In_ HWND hWnd, _In_ UINT msg, _In_ WPARAM wParam, _In_ LPARAM lParam)
{
    POINT pt;

    switch (msg)
    {

    case WM_LBUTTONDOWN:
            {
                pt.x = GET_X_LPARAM(lParam);
                pt.y = GET_Y_LPARAM(lParam);
            }
        break;

    default:
        return DefWindowProc(hWnd, msg, wParam, lParam);
    }
    return 0;
}

その他の例については、GitHub の Windows クラシック サンプルをご覧ください。

解説

前述のように、x 座標は戻り値の下位 short になり、y 座標は上位 short になります (複数のモニターを持つシステムでは負の値を取ることができるため、両方とも "符号付き" の値を表します)。 戻り値が変数に割り当てられている場合は、MAKEPOINTS マクロを使用して戻り値から POINTS 構造体を取得できます。 また、GET_X_LPARAM マクロまたは GET_Y_LPARAM マクロを使用して、x 座標または y 座標を抽出することもできます。

重要

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

Alt キーが押されたことを検出するには、GetKeyStateVK_MENU< 0 かどうかをチェックします。 これは GetAsyncKeyState にすることはできません。

要件

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

関連項目

リファレンス

GET_X_LPARAM

GET_Y_LPARAM

GetCapture

GetKeyState

SetCapture

WM_LBUTTONDBLCLK

WM_LBUTTONUP

Conceptual

マウス入力

その他のリソース

MAKEPOINTS

POINTS