WM_POINTERLEAVE訊息
當指標離開偵測範圍超出視窗(暫留)或指標超出視窗界限時,傳送至視窗。
視窗會透過其 WindowProc 函式接收此訊息。
![重要]
傳統型應用程式應能感知 DPI。 如果您的應用程式沒有 DPI 感知,指標訊息和相關結構中包含的螢幕座標可能會因為 DPI 虛擬化而顯示不正確。 DPI 虛擬化可為非 DPI 感知且預設為作用中的應用程式提供自動縮放支援(使用者可以將其關閉)。 如需詳細資訊,請參閱 撰寫 High-DPI Win32 應用程式。
#define WM_POINTERLEAVE 0x024A
參數
-
wParam
-
包含指標標識碼和其他資訊。 使用下列巨集來擷取此資訊。
- GET_POINTERID_WPARAM(wParam):指標標識符。
- IS_POINTER_INRANGE_WPARAM(wParam):指出此訊息是否由尚未離開偵測範圍的指標產生。 當指標離開視窗的偵測範圍時,不會設定此旗標。
- IS_POINTER_INCONTACT_WPARAM(wParam):旗標,指出此訊息是否由聯繫人中的指標產生。 此旗標未針對偵測範圍中的指標設定(暫留)。
-
lParam
-
包含指標的點位置。
注意
由於指標可能會透過非簡單區域與裝置接觸,因此這個點位置可能會簡化更複雜的指標區域。 盡可能使用完整的指標區域資訊,而不是點位置。
使用下列巨集來擷取點的實體螢幕座標。
- GET_X_LPARAM(lParam): x (水平點) 座標。
- GET_Y_LPARAM(lParam): y (垂直點) 座標。
傳回值
如果應用程式處理此訊息,它應該會傳回零。
如果應用程式未處理此訊息,它應該呼叫 DefWindowProc。
言論
視窗可以使用 WM_POINTERLEAVE 通知來變更模式,或在指標位於視窗表面時停止對使用者的任何意見反應。
此通知只會傳送至接收指標輸入的視窗。 下表列出傳送此通知的一些情況。
行動 | 旗標集 | 傳送至的通知 |
---|---|---|
暫留指標會跨越視窗界限。 | IS_POINTER_INRANGE_WPARAM | 超出其界限的視窗,指標移動。 |
指標超出偵測範圍。 | N/A | 指標離開偵測範圍的視窗。 |
![重要]
當視窗失去指標的擷取並收到 WM_POINTERCAPTURECHANGED 通知時,通常不會收到任何進一步的通知。 因此,請務必不要根據平均配對的 WM_POINTERDOWN/WM_POINTERUP 或 WM_POINTERENTER/WM_POINTERLEAVE 通知進行任何假設。
如果與輸入數位板保持接觸,且指標在視窗外移動,則不會產生 WM_POINTERLEAVE。 只有當暫留指標跨越視窗界限或聯繫人終止時,才會產生 WM_POINTERLEAVE。
如果輸入來自滑鼠裝置,則會將 WM_POINTERLEAVE 張貼至張貼的消息佇列。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 |
Windows 8 [僅限傳統型應用程式] |
最低支援的伺服器 |
Windows Server 2012 [僅限傳統型應用程式] |
頁眉 |
|