Ich habe einen Artikel speziell für Sie geschrieben, um zu wissen, wie man horizontales Scrollen von Touchpad in einer WPF-Anwendung behandelt. Das ist Support Horizontal Scrolling of TouchPad in WPF Application - walterlv
Wir brauchen WM_MOUSEHWHEEL
Nachricht aus unserem WPF-Fenster zu holen. Ja! Diese Mausradmeldung. Wir holen vorher vertikale Daten daraus, aber wir holen nun horizontale Daten daraus.
Zuerst sollten wir die Fenstermeldung haken.
protected override void OnSourceInitialized(EventArgs e)
{
var source = PresentationSource.FromVisual(_board);
((HwndSource) source)?.AddHook(Hook);
}
private IntPtr Hook(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
// Handle window message here.
return IntPtr.Zero;
}
Als nächstes behandeln WM_MOUSEHWHEEL
:
const int WM_MOUSEHWHEEL = 0x020E;
private IntPtr Hook(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
switch (msg)
{
case WM_MOUSEHWHEEL:
int tilt = (short) HIWORD(wParam);
OnMouseTilt(tilt);
return (IntPtr) 1;
}
return IntPtr.Zero;
}
/// <summary>
/// Gets high bits values of the pointer.
/// </summary>
private static int HIWORD(IntPtr ptr)
{
var val32 = ptr.ToInt32();
return ((val32 >> 16) & 0xFFFF);
}
/// <summary>
/// Gets low bits values of the pointer.
/// </summary>
private static int LOWORD(IntPtr ptr)
{
var val32 = ptr.ToInt32();
return (val32 & 0xFFFF);
}
private void OnMouseTilt(int tilt)
{
// Write your horizontal handling codes here.
}
Sie können in OnMouseTilt
Methode horizontales Scrollen Code schreiben.
Besser noch, Sie könnten alle oben genannten Codes in eine häufigere Klasse packen und ein Ereignis MouseTilt
auslösen, wie das Hochfahren des Ereignisses MouseWheel
.