Möglicherweise wissen Sie bereits, wie einige grundlegende Mausereignisse wie MouseUp / MouseDown und MouseMove behandelt werden. Es gibt jedoch Situationen, in denen Sie möchten, dass Ihre Maus das tut, was Sie sagen.
Viele von uns schreiben Programme, die nur mit der Maus funktionieren. Wenn wir Programme schreiben, die Mauspräsenz erfordern und / oder von der Maus abhängig sind, müssen wir sicherstellen, dass verschiedene Dinge richtig eingestellt sind.
Am schnellsten können Sie feststellen, ob die Maus vorhanden ist:
So verwenden Sie animierte Cursor (oder sogar BMP als CUR):
Die SetCursorPos-API-Funktion bewegt den Cursor zu den angegebenen Bildschirmkoordinaten. Da diese Funktion kein Windows-Handle als Parameter erhält, müssen x / y Bildschirmkoordinaten sein. Ihre Komponente verwendet relative Koordinaten, z. relativ zu einem TForm. Sie müssen die ClientToScreen-Funktion verwenden, um die richtigen Bildschirmkoordinaten zu berechnen.
In den meisten Fällen soll die Maus eine bestimmte Position auf dem Bildschirm anfahren. Wir wissen, dass einige Komponenten erst dann auf eine Cursoränderung reagieren, wenn der Benutzer die Maus bewegt. Wir müssen daher eine kleine Methode zum Bewegen vom Code bereitstellen. Und was ist mit Mausklicks in der Simulation, ohne den OnClick-Ereignishandler aufzurufen??
Das folgende Beispiel simuliert ein Mausklickereignis auf Button2 nach dem Klicken auf Button1. Wir müssen mouse_event () API-Aufruf verwenden. Die mouse_event-Funktion synthetisiert Mausbewegungen und Tastenklicks. Die angegebenen Mauskoordinaten sind in "Mickeys" angegeben, wobei die Breite eines Bildschirms 65535 "Mickeys" beträgt.
Mit der Windows-API-Funktion ClipCursor können Sie die Mausbewegung auf einen bestimmten rechteckigen Bereich auf dem Bildschirm beschränken:
Das Erkennen des Ein- und Aussteigens des Mauszeigers über einer Komponente tritt häufig beim Schreiben einer eigenen Komponente auf. Alle Nachkommen von TComponent senden eine CM_MOUSEENTER- und eine CM_MOUSELEAVE-Nachricht, wenn die Maus die Grenzen der Komponente betritt und verlässt. Sie müssen einen Nachrichten-Handler für die jeweiligen Nachrichten schreiben, wenn wir darauf antworten möchten.