WM_POINTERLEAVE メッセージ
ポインターがウィンドウの上に検出範囲を離れる (ホバー) か、ポインターがウィンドウの境界の外に移動したときに、ウィンドウに送信されます。
ウィンドウは、WindowProc 関数を介してこのメッセージを受け取ります。
![重要]
デスクトップ アプリは DPI 対応である必要があります。 アプリが DPI に対応していない場合、DPI 仮想化により、ポインター メッセージと関連する構造体に含まれる画面座標が不正確に見える可能性があります。 DPI 仮想化では、DPI 対応ではなく、既定でアクティブになっているアプリケーションに対して自動スケーリングのサポートが提供されます (ユーザーはそれをオフにすることができます)。 詳細については、「 高 DPI Win32 アプリケーションの作成」を参照してください。
#define WM_POINTERLEAVE 0x024A
パラメーター
-
wParam
-
ポインター識別子と追加情報を格納します。 この情報を取得するには、次のマクロを使用します。
- GET_POINTERID_WPARAM(wParam): ポインター識別子。
- IS_POINTER_INRANGE_WPARAM(wParam): このメッセージが、検出範囲を残していないポインターによって生成されたかどうかを示します。 ポインターがウィンドウの検出範囲を離れるときは、このフラグは設定されません。
- IS_POINTER_INCONTACT_WPARAM(wParam): このメッセージが接触しているポインターによって生成されたかどうかを示すフラグ。 このフラグは、検出範囲内のポインター (ホバー) には設定されません。
-
lParam
-
ポインターのポイント位置を格納します。
Note
ポインターは単純でない領域を介してデバイスと接触する可能性があるため、このポイント位置は、より複雑なポインター領域の簡略化になる可能性があります。 可能な限り、アプリケーションではポイントの場所ではなく、完全なポインター領域情報を使用する必要があります。
ポイントの物理的な画面座標を取得するには、次のマクロを使用します。
- GET_X_LPARAM(lParam): x (水平点) 座標。
- GET_Y_LPARAM(lParam): y (垂直点) 座標。
戻り値
アプリケーションでこのメッセージを処理する場合は、0 を返す必要があります。
アプリケーションがこのメッセージを処理しない場合は、 DefWindowProc を呼び出す必要があります。
注釈
WM_POINTERLEAVE通知は、ウィンドウでモードを変更したり、ポインターがウィンドウサーフェス上にある間にユーザーへのフィードバックを停止したりするために使用できます。
この通知は、ポインターの入力を受信しているウィンドウにのみ送信されます。 次の表に、この通知が送信される状況の一部を示します。
アクション | フラグ セット | 送信先の通知 |
---|---|---|
マウス ポインターがウィンドウの境界を越えます。 | IS_POINTER_INRANGE_WPARAM | ポインターが移動した境界の外側のウィンドウ。 |
ポインターが検出範囲外になります。 | 該当なし | ポインターが検出範囲を離れるウィンドウ。 |
![重要]
ウィンドウがポインターのキャプチャを失い、 WM_POINTERCAPTURECHANGED 通知を受信すると、通常はそれ以上の通知は受信されません。 このため、均等にペアになっているWM_POINTERDOWN WM_POINTERUPやWM_POINTERLEAVE通知を/WM_POINTERENTER/に基づいて、何も想定しないことが重要です。
入力デジタイザーで接触が維持され、ポインターがウィンドウの外に移動した場合、 WM_POINTERLEAVE は生成されません。 WM_POINTERLEAVE は、ホバー ポインターがウィンドウの境界を越えるか、連絡先が終了した場合にのみ生成されます。
入力 がマウス デバイスから送信された場合、WM_POINTERLEAVEはポストされたメッセージ キューにポストされます。
必要条件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows 8 [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows Server 2012 [デスクトップ アプリのみ] |
Header |
|