Frage

In fast jeder Windows-Anwendung, merke ich, dass die Maustaste gedrückt in einem Nicht-Client-Bereich hält das Gemälde verursacht zu stoppen. Warum ist dies erforderlich?

Zum Beispiel habe ich eine Managed Direct 3D-Anwendung, die einen sich drehenden Würfel anzeigt. Wenn ich den Mauszeiger über die Titelleiste platzieren und halten Sie die Maustaste los, der Würfel nicht mehr selbst zu drehen, obwohl ich keine solche Bedingung in meine Schleife codiert haben.

Warum wird angehalten Malerei? Was sind die Vorteile? Am wichtigsten ist, wie kann ich dieses Problem umgehen?

War es hilfreich?

Lösung

Wenn Sie auf die Titelleiste klicken, gibt es eine kurze Pause während der window-Manager versucht zu ermitteln, ob oder nicht Sie klicken oder eine Drag beginnen (bewegen des Fensters). Wenn Sie immer noch die Taste gedrückt halten, dann ist es ein Drag: Der Window-Manager seine eigene Nachrichtenschleife einrichtet und Pumpen Nachrichten, bis Sie die Maustaste loslassen. Ihr Fenster soll noch in der Lage sein, Nachrichten zu verarbeiten, weil sie noch versandt werden werden, aber wenn Ihre Animation auf einer Schleife benutzerdefinierte Nachricht hängt dann werden Sie ‚bis zur modalen drag Schleife endet geklebt werden.

Umgehen es durch Ihre Animation in Reaktion auf Meldungen Triggern: ein Timer scheint eine gute Wahl für mich

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top