簡體   English   中英

在 wndproc 中處理 WM_MOUSEACTIVATE 時如何獲取鼠標狀態

[英]How to get mouse state while handling WM_MOUSEACTIVATE in wndproc

為了防止在左鍵單擊時切換到窗口,我正在處理WM_MOUSEACTIVATE並且它可以工作,除非我正在測試鼠標按鈕狀態。 此處的按鈕狀態將顯示為已釋放,即使使用左鍵按下來調用此事件並保持。

private const int WM_MOUSEACTIVATE = 0x0021;
private const uint MA_NOACTIVATE = 3;
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
    if (msg == WM_MOUSEACTIVATE)
    {
        if (Mouse.LeftButton == MouseButtonState.Pressed)
        {
            handled = true;
            return (IntPtr)MA_NOACTIVATE ;

WM_LBUTTONDOWN僅在WM_MOUSEACTIVATE之后收到,我希望靜態Mouse.LeftButton都會返回當前值。 有沒有更好的方法來獲取鼠標左鍵的當前狀態?

您根本不必使用 WndProc。 您可以使用UIElement.PreviewMouseDown 事件並參考MouseButtonEventArgs來獲取狀態信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM