2008-10-27 7 views
5

In fast jeder Windows-Anwendung, merke ich, dass das Halten der Maustaste in einem Nicht-Client-Bereich das Gemälde zu stoppen. Warum ist das erforderlich?Windows: Mouse Down auf Fenster Dekoration

Zum Beispiel habe ich eine Managed Direct 3D-Anwendung, die einen rotierenden Würfel anzeigt. Wenn ich den Mauszeiger über die Titelleiste halte und die Maustaste gedrückt halte, dreht sich der Würfel nicht mehr, obwohl ich keine Bedingung in meine Schleife geschrieben habe.

Warum wird das Gemälde angehalten? Was sind die Vorteile? Am wichtigsten, wie kann ich das umgehen?

+0

Ich finde diese "Funktion" aber nützlich für das Debuggen. Um sich drehende Würfel für eine nähere Inspektion und so zu pausieren. –

Antwort

7

Wenn Sie auf die Titelleiste klicken, wird a brief pause angezeigt, während der Fenstermanager versucht, festzustellen, ob Sie klicken oder einen Ziehvorgang starten (Verschieben des Fensters). Wenn Sie die Taste gedrückt halten, ist es ein Ziehen: Der Fenstermanager richtet seine eigene Nachrichtenschleife ein und pumpt Nachrichten, bis Sie die Maustaste loslassen. Ihr Fenster sollte weiterhin in der Lage sein, Nachrichten zu verarbeiten, da sie immer noch versendet werden. Wenn Ihre Animation jedoch von einer benutzerdefinierten Nachrichtenschleife abhängt, bleiben Sie so lange stecken, bis die modale Schleppschleife endet.

Umgehen Sie es, indem Sie Ihre Animation als Reaktion auf Nachrichten auslösen: Ein Timer scheint eine gute Wahl für mich.

+0

Ich möchte nur klarstellen, dass meine Anwendung nicht von einer benutzerdefinierten Nachrichtenschleife abhängt. Ich glaube auch, dass diese Bedingungen für alle Anwendungen unter Windows XP gelten (und 2000 ... auf anderen nicht getestet wurden). –

Verwandte Themen