¿Dónde se almacena la información sobre la posición de una ventana?

9

¿Dónde se almacena la información sobre la posición de una ventana?

Un ejemplo: empiezo notepad.exe, y comienza ni minimizado ni maximizado, sino solo una ventana de tamaño mediano en el centro de la pantalla. Si lo cierro y lo vuelvo a iniciar, está en las mismas coordenadas XY. Pero luego, si lo cierro mientras está en la parte inferior de la pantalla, se iniciará nuevamente en la parte inferior (a diferencia de la parte central) de la pantalla.

Si quisiera cambiar manualmente las posiciones XY de una ventana para que se abriera en una ubicación no estándar, ¿qué necesitaría editar?

Probablemente el registro, pero ¿dónde?

BenjiWiebe
fuente

Respuestas:

8

Cada programa almacena información sobre sus ventanas a su manera. Para el Bloc de notas, encontré lo siguiente en mi registro de Windows XP.

En el registro, vaya a la siguiente carpeta

HKEY_CURRENT_USER\Software\Microsoft\Notepad

luego modifique los siguientes valores

iWindowPosX
iWindowPosY
iWindowPosDX
iWindowPosDY

X e Y son las coordenadas de la esquina superior izquierda de la ventana. DX y DY son el ancho y la altura de la ventana.

Otros programas pueden guardar la información de posición de la ventana en el registro o en otros archivos de configuración.

Bavi_H
fuente
¿Entonces cada programa tiene que manejar sus propios datos de posicionamiento?
BenjiWiebe
Esperaba que Windows lo manejara. Pero tengo una onda cerebral. Compilé un programa GUI Win32 muy básico, y busqué en el código para localizar el código de configuración de posición. Todo lo que encontré fue una línea que le decía a Windows que posicionara el programa. Luego, Windows posicionó el programa como cualquier programa de consola: esquina superior izquierda, luego un poco más abajo y hacia la derecha, y luego bajó nuevamente, hasta que finalmente se restableció a la esquina superior izquierda. Demostración: escriba start10 veces test.baty ejecútelo.
BenjiWiebe
Acabo de ver que iWindowPosX estaba configurado en fffffffd (4294967293) en mi caso. ¿Alguna idea de cómo funciona ese número masivo?
Karan
@BenjiWiebe Son cosas diferentes: 1. Si un programa recuerda la posición de una ventana para poder colocarla en el mismo lugar la próxima vez, entonces el programa puede elegir cómo y dónde guarda las coordenadas y el tamaño de la ventana. Podría guardar los valores en el registro, un archivo de texto o de alguna otra manera. 2. Si está escribiendo un programa que crea una ventana, debería poder especificar la posición y el tamaño de la ventana cuando la cree. Supongo que si no los especifica, Windows elegirá una ubicación predeterminada como usted describe. Quizás pueda obtener orientación más específica en un foro de programación.
Bavi_H
1
@Karan Ese número es -3 cuando los bits se tratan como un valor con signo. Brevemente: imagine un odómetro con ocho carretes, y cada carrete tiene los dígitos 0 a 9 y luego A a F en él. Si comienza en 00000000 y luego hace clic en el odómetro hacia atrás tres veces, termina en FFFFFFFD. Para más detalles: aprenda sobre binario, hexadecimal y complemento de dos.
Bavi_H