Où sont stockées les informations sur la position d'une fenêtre?

9

Où sont stockées les informations sur la position d'une fenêtre?

Un exemple: je démarre notepad.exe, et il ne démarre ni minimisé ni maximisé, mais juste une fenêtre de taille moyenne au centre de l'écran. Si je le ferme et le redémarre, il est aux mêmes coordonnées XY. Mais si je le ferme alors qu'il se trouve en bas de l'écran, il redémarrera en bas (par opposition au milieu) de l'écran.

Si je voulais modifier manuellement les positions XY d'une fenêtre afin qu'elle s'ouvre à un emplacement non standard, que devrais-je modifier?

Probablement le registre, mais où?

BenjiWiebe
la source

Réponses:

8

Chaque programme stocke des informations sur ses fenêtres à sa manière. Pour le Bloc-notes, j'ai trouvé ce qui suit dans mon registre Windows XP.

Dans le registre, accédez au dossier suivant

HKEY_CURRENT_USER\Software\Microsoft\Notepad

puis modifiez les valeurs suivantes

iWindowPosX
iWindowPosY
iWindowPosDX
iWindowPosDY

X et Y sont les coordonnées du coin supérieur gauche de la fenêtre. DX et DY sont la largeur et la hauteur de la fenêtre.

D'autres programmes peuvent enregistrer des informations de position de fenêtre dans le registre ou dans d'autres fichiers de paramètres.

Bavi_H
la source
Donc, chaque programme doit gérer ses propres données de positionnement ??
BenjiWiebe
J'espérais que Windows s'en occupe. Mais j'ai eu une onde cérébrale. J'ai compilé un programme GUI Win32 très basique et j'ai parcouru le code pour localiser le code de réglage de position. Tout ce que j'ai trouvé était une ligne qui disait à Windows de positionner le programme. Windows a ensuite positionné le programme comme n'importe quel programme de console - coin supérieur gauche, puis un peu plus bas et à droite, puis à nouveau, jusqu'à ce qu'il soit finalement réinitialisé dans le coin supérieur gauche. Démo: tapez start10 fois dans test.batet exécutez-le.
BenjiWiebe
Je viens de voir que iWindowPosX était réglé sur fffffffd (4294967293) dans mon cas. Une idée du fonctionnement de ce nombre massif?
Karan
@BenjiWiebe Ce sont des choses différentes: 1. Si un programme se souvient de la position d'une fenêtre afin de pouvoir la mettre au même endroit la prochaine fois, alors le programme peut choisir comment et où il enregistre les coordonnées et la taille de la fenêtre. Il pourrait enregistrer les valeurs dans le registre, un fichier texte ou d'une autre manière. 2. Si vous écrivez un programme qui crée une fenêtre, vous devriez pouvoir spécifier la position et la taille de la fenêtre lorsque vous créez la fenêtre. Je suppose que si vous ne les spécifiez pas, Windows choisira un emplacement par défaut comme vous le décrivez. Vous pouvez peut-être obtenir des conseils plus spécifiques sur un forum de programmation.
Bavi_H
1
@Karan Ce nombre est -3 lorsque les bits sont traités comme une valeur signée. En bref: imaginez un compteur kilométrique à huit rouleaux, et chaque bobine a les chiffres 0 à 9 puis A à F sur elle. Si vous commencez à 00000000 puis cliquez trois fois sur l'odomètre, vous vous retrouvez à FFFFFFFD. Pour plus de détails: découvrez le binaire, l'hexadécimal et le complément à deux.
Bavi_H