MouseFilter-Komponente

Stellt Funktionen bereit, mit denen sich die Funktionsweise der Maus in Anwendungen beeinflussen lässt.

Diese Komponente beinhaltet die folgenden Funktionen:

Ausblenden des Mauszeigers nach Inaktivität

In Vollbild-Anwendungen kann es sinnvoll sein, den Mauszeiger bei Nichtbenutzung auszublenden. Dafür werden alle Windows-Nachrichten an die laufende Anwendung überwacht und der Mauszeiger nach einer Weile, in der die Maus nicht bewegt wurde, ausgeblendet. Wird die Maus bewegt, wird der Zeiger sofort wieder angezeigt, bis zur nächsten Inaktivität. Diese Funktion wird mit der Eigenschaft AutoHideCursor aktiviert. Außerdem werden die Ereignisse MouseHidden und MouseShown bereitgestellt, die über das Ausblenden bzw. Anzeigen des Mauszeigers benachrichtigen.

Weiterleiten der Mausrad-Eingaben an das Steuerelement unter dem Mauszeiger

Normalerweise werden Mausrad-Eingaben immer an das Steuerelement gesendet, das den Tastatur-Eingabefokus besitzt. Da das Rad aber an der Maus befestigt ist und nicht an der Tastatur, sollte es sich mehr nach der Position des Mauszeigers richten als nach dem Tastaturfokus. Diese Funktion wird mit der Eigenschaft DispatchMouseWheel aktiviert. Aufgrund der Art und Weise wie Windows die entsprechenden Nachrichten versendet kann man allerdings nicht in inaktiven Fenstern scrollen, auch wenn der Cursor darüber steht.

Kompatibilität: .NET Ab Version 2.0

Download

Da diese Komponente eine Reihe von Hilfsklassen verwendet, die ich in meinen eigenen Anwendungen üblicherweise verwende, biete ich nur eine einfache Beispielanwendung zum Download an, die den gesamten benötigten Quelltext dieser Komponente enthält und gleichzeitig die Verwendung demonstriert. Die Dateien dieser Komponente befinden sich im Unterverzeichnis „Unclassified“.

mousefilter.7z13,6 KiBBeispielprojekt (Visual Studio 2005/2010, C#-Projekt) mit dem Quelltext der MouseFilter-Komponente und einer kleinen Testanwendung.

Hinweise zur Verwendung

Allgemein genügt es, eine Instanz der MouseFilter-Komponente zu einem Fenster der Anwendung hinzuzufügen, um die Funktionen zu verwenden. Da sich die Komponente als MessageFilter für die ganze Anwendung registriert, sollte das das Hauptfenster sein. Die zusätzliche Verwendung in weiteren Fenstern ist vermutlich unproblematisch, sollte aber trotzdem vermieden werden.

Diese Komponente wurde bislang nur in Windows-Forms-Anwendungen getestet. Inwieweit sie in WPF-Anwendungen funktioniert, ist mir derzeit nicht bekannt. Zumindest die Mausrad-Weiterleitung scheint bei WPF aber nicht mehr notwendig zu sein, da dieses Verhalten bereits besteht.

Änderungen

2012Jan5
Unterstützung für ComboBox-Controls und Scroll-Panels verbessert.

Lizenz und Nutzungsbedingungen

Diese Software wird unter den Bedingungen der vereinfachten BSD-Lizenz veröffentlicht. Die genauen Lizenzbedingungen befinden sich im Download.

Statistische Daten

  • Erstellt am 2007-09-16, aktualisiert am 2011-08-29.
  • Erstmals in ARLog: Amateurfunk-Logbuch verwendet.
  • Ca. 120 Codezeilen, geschätzte Ent­wick­lungs­kos­ten: 120 - 480 €