2009-03-20 8 views
2

Immer wenn ich Code für die Mausbearbeitung schreibe, schien mich das Onmousedown/Onmouseup/Onmousemove-Modell immer zu zwingen, unnötig komplexen Code zu produzieren, der immer noch alle Arten von UI-Fehlern verursachen würde.Wie benutzt man onmousedown/onmouseup korrekt?

Das Hauptproblem, das ich heute sogar in großen Teilen der Software sehe, ist das "Geistermaus" -Ereignis, bei dem man aus dem Fenster zieht und dann loslässt. Sobald Sie wieder in das Fenster zurückkehren, denkt die Anwendung immer noch, dass Sie die Maustaste gedrückt haben, obwohl die Schaltfläche aktiv ist. Dies ist besonders ärgerlich, wenn Sie versuchen, etwas hervorzuheben, das an den Bildschirmrand reicht.

Gibt es einen richtigen Weg, um Maus-Code zu schreiben oder ist das gesamte Modell nur fehlerhaft?

Antwort

2

Normalerweise erfasst man die Mausereignisse mit der Maus nach unten, so dass die Mausbewegung und Mausbewegung durch Ihren Code gehen, unabhängig davon, ob sich das Kästchen aus Ihrem Anwendungsfenster bewegt.

In jüngerer Zeit ist dies ein Problem beim Ausführen einer VM- oder Remote-Sitzung. Es ist für Anwendungen in diesen Anwendungen schwierig, die Maus außerhalb des durch ein Fenster auf einem Host dargestellten Bildschirmbereichs zu verfolgen.

+0

Vermutlich ist dies eine Blasenerfassung? –

0

Ich bin mir nicht sicher, in welcher Umgebung Sie versuchen, Maustasten zu verfolgen, aber der beste Weg, dies zu bewältigen, ist ein Maus-Listener, der 100% der Zeit aufzeichnet, nachdem Sie onmousedown erkannt haben.

Auf diese Weise ist es egal, in welcher Bildschirmregion der Benutzer die Maustaste loslässt. Es wird zurückgesetzt, egal wo es passiert.