WM_SETCURSOR メッセージは、マウス入力がキャプチャされていない状態でマウスカーソルがウィンドウ内で動いたときに送信されます。
ウィンドウは、ウィンドウプロシージャを介してこのメッセージを受け取ります。
#define WM_SETCURSOR 0x0020 hwnd = wParam; nHitTest = lParam & 0xFFFF; wMouseMsg = (lParam >> 16) & 0xFFFF;
wParam パラメータの値。
カーソルが含まれているウィンドウのハンドルが指定されます。
lParam パラメータの下位ワードの値。
ヒットテストの領域コードが指定されます。以下の値のいずれかになります。
| 値 | 意味 |
|---|---|
| -2 (HTERROR) | スクリーンの背景上またはウィンドウの区切り線上にあります。これは、 DefWindowProc 関数がエラーを示すシステムビープ音を発生するということ以外は HTNOWHERE と同じです。 |
| -1 (HTTRANSPARENT) | 同じスレッドの別のウィンドウによって覆われている領域上にあります。 |
| 0 (HTNOWHERE) | スクリーンの背景かウィンドウの区切り線上にあります。 |
| 1 (HTCLIENT) | クライアント領域内にあります。 |
| 2 (HTCAPTION) | タイトルバーの領域内にあります。 |
| 3 (HTSYSMENU) | コントロールメニュー内、または子ウィンドウのクローズボタン内にあります。 |
| 4 (HTGROWBOX, HTSIZE) | サイズボックス内にあります。 |
| 5 (HTMENU) | メニュー領域内にあります。 |
| 6 (HTHSCROLL) | 水平スクロールバー内にあります。 |
| 7 (HTVSCROLL) | 垂直スクロールバー内にあります。 |
| 8 (HTMINBUTTON, HTREDUCE) | アイコン化ボタン内にあります。 |
| 9 (HTMAXBUTTON, HTZOOM) | 最大表示ボタン内にあります。 |
| 10 (HTLEFT, HTSIZEFIRST) | ウィンドウ境界の左端の線上にあります。 |
| 11 (HTRIGHT) | ウィンドウ境界の右端の線上にあります。 |
| 12 (HTTOP) | ウィンドウ境界の上端の線上にあります。 |
| 13 (HTTOPLEFT) | ウィンドウ境界の左上隅にあります。 |
| 14 (HTTOPRIGHT) | ウィンドウ境界の右上隅にあります。 |
| 15 (HTBOTTOM) | ウィンドウ境界の下端の線上にあります。 |
| 16 (HTBOTTOMLEFT) | ウィンドウ境界の左下隅にあります。 |
| 17 (HTBOTTOMRIGHT, HTSIZELAST) | ウィンドウ境界の右下隅にあります。 |
| 18 (HTBORDER) | サイズ変更される境界線を持たないウィンドウ境界内にあります。 |
| 20 (HTCLOSE) | 「閉じる」ボタン内にあります。 |
| 21 (HTHELP) | 「ヘルプ」ボタン内にあります。 |
lParam パラメータの上位ワードの値。
マウスメッセージ ID が指定されます。
アプリケーションがこのメッセージを処理した場合は、以降の操作を中断するには 1 (TRUE) を、以降の操作を続けるには 0 (FALSE) を返します。
DefWindowProc 関数は、まずウィンドウが親ウィンドウを持つ場合には親ウィンドウに WM_SETCURSOR メッセージを送信します。親ウィンドウが 1 (TRUE) を返した場合には以降の処理は中断されます。 DefWindowProc 関数は、カーソルがクライアントエリアにない場合にカーソルを矢印にするために、また、クライアントエリアにある場合には登録されているクラスカーソルにするためにこのメッセージを使用します。 nHitTest パラメータが HTERROR であり、 fType パラメータがマウスボタンが押されていることを示していた場合には DefWindowProc 関数は MessageBeep 関数を呼び出します。
Windows 95 以降 / Windows NT 3.1 以降