Где хранится информация о положении окна?

9

Где хранится информация о положении окна?

Пример: я запускаю notepad.exe, и он запускается не свернутым или развернутым, а просто окном среднего размера в центре экрана. Если я закрою его и начну снова, он будет с теми же координатами XY. Но затем, если я закрою его, пока он находится внизу экрана, он снова запустится внизу (в отличие от средней части) экрана.

Если бы я хотел вручную изменить положения XY окна, чтобы оно открывалось в нестандартном месте, что бы мне нужно было отредактировать?

Вероятно, реестр, но где?

BenjiWiebe
источник

Ответы:

8

Каждая программа хранит информацию о своих окнах по-своему. Для Блокнота я нашел следующее в моем реестре Windows XP.

В реестре перейдите в следующую папку

HKEY_CURRENT_USER\Software\Microsoft\Notepad

затем измените следующие значения

iWindowPosX
iWindowPosY
iWindowPosDX
iWindowPosDY

X и Y - координаты верхнего левого угла окна. DX и DY - ширина и высота окна.

Другие программы могут сохранять информацию о положении окна в реестре или в других файлах настроек.

Bavi_H
источник
Таким образом, каждая программа должна обрабатывать свои собственные данные позиционирования?
BenjiWiebe
Я надеялся, что Windows справится с этим. Но у меня есть мозговая волна. Я скомпилировал очень простую программу для Win32 GUI и просмотрел код, чтобы найти код установки положения. Все, что я нашел, было строкой, которая говорила Windows, чтобы позиционировать программу. Затем Windows позиционирует программу как любую консольную программу - в верхнем левом углу, затем немного ниже и вправо, а затем снова опускает, пока, наконец, не сбросит ее в верхний левый угол. Демо: введите start10 раз test.batи запустите.
BenjiWiebe
Я только что увидел, что в моем случае для iWindowPosX было установлено значение fffffffd (4294967293). Есть идеи, как работает это огромное число?
Каран
@BenjiWiebe Это разные вещи: 1. Если программа запоминает позицию окна, чтобы в следующий раз она могла поставить его на то же место, тогда программа выбирает, как и где она сохраняет координаты и размер окна. Это может сохранить значения в реестре, текстовом файле или другим способом. 2. Если вы пишете программу, которая создает окно, вы должны быть в состоянии указать положение и размер окна при создании окна. Думаю, если вы не укажете их, Windows выберет размещение по умолчанию, как вы описали. Возможно, вы можете получить более конкретные рекомендации на форуме программирования.
Bavi_H
1
@Karan Это число равно -3, когда биты обрабатываются как значение со знаком. Вкратце: представьте себе одометр с восемью барабанами, каждый из которых имеет цифры от 0 до 9, а затем от A до F. Если вы начнете с 00000000, а затем нажмите одометр назад три раза, вы получите FFFFFFFD. Для более подробной информации: узнайте о двоичном, шестнадцатеричном и двух дополнениях.
Bavi_H