[英]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.