2010-07-29 2 views
0

나는 클릭하고 포커스를 얻고 응용 프로그램을 중지하기 위해 다음 코드 블록을 사용? HwndSource를 사용할 수 있습니까?WPF 정지 마우스 다운 이벤트 얻고 응용 프로그램의 초점은 윈폼에서

protected override void OnSourceInitialized(EventArgs e) 
    { 
     base.OnSourceInitialized(e); 
     HwndSource source = PresentationSource.FromVisual(this) as HwndSource; 
     source.AddHook(WndProc); 
    } 

private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) 
{ 
    // Handle messages... 
    int WM_MOUSEACTIVATE = 0x0021; 
    int WM_LBUTTONDOWN = 0x0201; //513 
    int WM_LBUTTONUP = 0x0202; //514 
    int WM_LBUTTONDBLCLK = 0x0203; //515 
    if (msg == WM_MOUSEACTIVATE || msg == MA_NOACTIVATEANDEAT || msg == WM_LBUTTONDOWN || msg == WM_LBUTTONUP || msg == WM_LBUTTONDBLCLK) 
    { 
     handled = true; 
    } 
    return IntPtr.Zero; 
} 

어떻게 메시지의 결과를 얻을 수 있습니다 : 여기 (필수 및 응용 프로그램이 여전히 포커스를 취득로 WM_MOUSEACTIVATE 혼자가 작동하지 않습니다) 내가 지금까지 가지고 무엇인가?

private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) 
{ 
    // Handle messages... 
    int WM_MOUSEACTIVATE = 0x0021; 
    if (msg == WM_MOUSEACTIVATE) 
    { 
     handled = true; 
     return new IntPtr(MA_NOACTIVATEANDEAT); 
    } 
    return IntPtr.Zero; 
} 

답변

1

29.aspx)
+0

어디 MA_NOACTIVATEANDEAT = 4 소스 (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645612%28v=vs.85% : 사용함으로써 해결 –

관련 문제