0
Dans WinForms j'ai utilisé le bloc de code suivant pour arrêter l'application gagnant attention en étant cliqué sur:souris d'arrêt WPF bas événement gagnant de mise au point d'application
private const int WM_MOUSEACTIVATE = 0x0021;
private const int MA_NOACTIVATEANDEAT = 0x0004;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_MOUSEACTIVATE)
{
m.Result = (IntPtr)MA_NOACTIVATEANDEAT;
return;
}
base.WndProc(ref m);
}
est-il une alternative à cela dans une application WPF? Puis-je utiliser un HwndSource? Voici ce que j'ai jusqu'à présent (WM_MOUSEACTIVATE ne fonctionne pas seul au besoin, et l'application se concentrer encore):
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;
}
Comment puis-je obtenir le résultat du message?
Lorsque MA_NOACTIVATEANDEAT = 4 [source] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645612%28v=vs.85% 29.aspx) –