Wo werden die Informationen über die Position eines Fensters gespeichert?

9

Wo werden die Informationen über die Position eines Fensters gespeichert?

Ein Beispiel: Ich starte notepad.exeund es startet weder minimiert noch maximiert, sondern nur ein mittelgroßes Fenster in der Mitte des Bildschirms. Wenn ich es schließe und erneut starte, hat es die gleichen XY-Koordinaten. Wenn ich es dann schließe, während es sich am unteren Bildschirmrand befindet, wird es am unteren Bildschirmrand (im Gegensatz zur Mitte) wieder gestartet.

Was müsste ich bearbeiten, wenn ich die XY-Positionen eines Fensters manuell ändern möchte, damit es an einem nicht standardmäßigen Ort geöffnet wird?

Wahrscheinlich die Registrierung, aber wo?

BenjiWiebe
quelle

Antworten:

8

Jedes Programm speichert Informationen über seine Fenster auf seine eigene Weise. Für Notepad habe ich Folgendes in meiner Windows XP-Registrierung gefunden.

Wechseln Sie in der Registrierung in den folgenden Ordner

HKEY_CURRENT_USER\Software\Microsoft\Notepad

Ändern Sie dann die folgenden Werte

iWindowPosX
iWindowPosY
iWindowPosDX
iWindowPosDY

X und Y sind die Koordinaten der oberen linken Ecke des Fensters. DX und DY sind die Breite und Höhe des Fensters.

Andere Programme speichern möglicherweise Informationen zur Fensterposition in der Registrierung oder in anderen Einstellungsdateien.

Bavi_H
quelle
Also muss jedes Programm seine eigenen Positionierungsdaten verarbeiten?
BenjiWiebe
Ich hatte gehofft, dass Windows damit umgeht. Aber ich habe eine Gehirnwelle. Ich habe ein sehr einfaches Win32-GUI-Programm kompiliert und den Code durchgesehen, um den Positionseinstellungscode zu finden. Ich fand nur eine Zeile, in der Windows angewiesen wurde, das Programm zu positionieren. Windows positionierte das Programm dann wie jedes Konsolenprogramm - oben links, dann etwas tiefer und rechts und dann wieder tiefer, bis es schließlich wieder oben links zurückgesetzt wurde. Demo: start10 mal eingeben test.batund ausführen.
BenjiWiebe
Ich habe gerade gesehen, dass iWindowPosX in meinem Fall auf fffffffd (4294967293) eingestellt war. Irgendeine Idee, wie diese riesige Zahl funktioniert?
Karan
@BenjiWiebe Das sind verschiedene Dinge: 1. Wenn sich ein Programm die Position eines Fensters merkt, damit es das nächste Mal an derselben Stelle platziert werden kann, kann das Programm auswählen, wie und wo die Fensterkoordinaten und -größe gespeichert werden. Es könnte die Werte in der Registrierung, einer Textdatei oder auf andere Weise speichern. 2. Wenn Sie ein Programm schreiben, das ein Fenster erstellt, sollten Sie in der Lage sein, die Position und Größe des Fensters beim Erstellen des Fensters anzugeben. Ich denke, wenn Sie sie nicht angeben, wählt Windows eine Standardplatzierung, wie Sie sie beschreiben. Vielleicht können Sie in einem Programmierforum genauere Anleitungen erhalten.
Bavi_H
1
@Karan Diese Zahl ist -3, wenn die Bits als vorzeichenbehafteter Wert behandelt werden. Kurz gesagt: Stellen Sie sich einen Kilometerzähler mit acht Rollen vor, auf der jede Rolle die Ziffern 0 bis 9 und dann A bis F hat. Wenn Sie bei 00000000 beginnen und dann dreimal rückwärts auf den Kilometerzähler klicken, gelangen Sie zu FFFFFFFD. Weitere Informationen: Erfahren Sie mehr über Binär-, Hexadezimal- und Zweierkomplement.
Bavi_H