2009-07-09 19 views
0

Ich versuche, die Fensterposition einer Anwendung zu bestimmen. Ich weiß SetWindowPos() würde die Fensterposition an einer bestimmten Position mit einer bestimmten Größe festlegen. Ich möchte diese Informationen abrufen, aber ich habe einige negative Werte in dort bemerkt. Wenn ich diese Werte in der Registrierung speichern und sie dann in der nächsten Instanz laden, kann ich die Größen- und Platzierungsinformationen nicht genau replizieren. Ist das überhaupt die genaueste Funktion überhaupt?MFC: GetWindowRect Verwendung

Danke.

Antwort

3

Sie sollten die GetWindowPlacement-Methode aufrufen, um die WINDOWPLACEMENT-Struktur abzurufen, die nicht nur die Fensterposition, sondern auch den Status des Fensters (minimiert, maximiert usw.) enthält.

Im Gegenzug sollten Sie diese Informationen zusätzlich zu den Positionswerten in der Registrierung speichern und den Status des Fensters beim Zurücklesen der Werte aus der Registrierung festlegen.

+0

Wenn ich die Struktur WINDOWPLACEMENT das erste Mal setze, werde ich nicht wissen, wie man das Längenelement dieser Struktur einstellt. Was sollte in diesem Fall für dieses Element getan werden (ähnlich wie bei anderen Elementen)? – stanigator

+0

Warum würdest du das nicht wissen? Es ist die Länge der Struktur in Bytes, die Sie mit sizeof (wp) erhalten können, wobei wp die WINDOWPLACEMENT-Strukturvariable ist. – casperOne

2

Ja, GetWindowRect ist die gewünschte Funktion. Negative Werte sollten nur bei Systemen mit mehreren Monitoren möglich sein, wenn sich das Fenster über oder links vom primären Monitor befindet.

SetWindowPos wird die Position relativ zum übergeordneten Fenster des Fensters festlegen, daher müssen Sie die Koordinaten vor dem Aufruf anpassen.