Gdzie przechowywane są informacje o pozycji okna?

9

Gdzie przechowywane są informacje o pozycji okna?

Przykład: Zaczynam notepad.exei nie zaczyna się ani zminimalizowany, ani zmaksymalizowany, a jedynie okno średniej wielkości na środku ekranu. Jeśli go zamknę i uruchomię ponownie, będzie on miał te same współrzędne XY. Ale jeśli zamknę go, gdy znajduje się na dole ekranu, zacznie się ponownie na dole (w przeciwieństwie do środkowej części) ekranu.

Gdybym chciał ręcznie zmienić pozycje XY okna, aby otwierało się w niestandardowej lokalizacji, co musiałbym edytować?

Prawdopodobnie rejestr, ale gdzie?

BenjiWiebe
źródło

Odpowiedzi:

8

Każdy program przechowuje informacje o swoich oknach na swój własny sposób. W przypadku Notatnika w rejestrze systemu Windows XP znalazłem następujące informacje.

W rejestrze przejdź do następującego folderu

HKEY_CURRENT_USER\Software\Microsoft\Notepad

następnie zmodyfikuj następujące wartości

iWindowPosX
iWindowPosY
iWindowPosDX
iWindowPosDY

X i Y są współrzędnymi lewego górnego rogu okna. DX i DY to szerokość i wysokość okna.

Inne programy mogą zapisywać informacje o położeniu okna w rejestrze lub w innych plikach ustawień.

Bavi_H
źródło
Więc każdy program musi obsługiwać własne dane pozycjonowania?
BenjiWiebe
Miałem nadzieję, że Windows sobie z tym poradzi. Ale mam falę mózgową. Skompilowałem bardzo prosty program GUI Win32 i przejrzałem kod, aby znaleźć kod ustawienia pozycji. Wszystko, co znalazłem, to wiersz, który powiedział Windowsowi, aby ustawił program. Następnie system Windows ustawił program jak każdy program konsoli - lewy górny róg, następnie nieco niższy i prawy, a następnie ponownie opuścił, aż w końcu zresetował go do lewego górnego rogu. Demo: wpisz start10 razy test.bati uruchom go.
BenjiWiebe
Właśnie zobaczyłem, że iWindowPosX został ustawiony na fffffffd (4294967293) w moim przypadku. Wiesz, jak działa ta ogromna liczba?
Karan
@BenjiWiebe Są to różne rzeczy: 1. Jeśli program zapamiętuje pozycję okna, aby następnym razem umieścić je w tym samym miejscu, program wybiera, w jaki sposób i gdzie zapisuje współrzędne i rozmiar okna. Może zapisać wartości w rejestrze, pliku tekstowym lub w inny sposób. 2. Jeśli piszesz program, który tworzy okno, powinieneś być w stanie określić jego położenie i rozmiar podczas tworzenia okna. Myślę, że jeśli ich nie określisz, system Windows wybierze domyślne miejsce docelowe, tak jak to opisujesz. Być może możesz uzyskać bardziej szczegółowe wskazówki na forum programowania.
Bavi_H
1
@Karan Liczba ta wynosi -3, gdy bity są traktowane jako wartość ze znakiem. W skrócie: wyobraź sobie licznik przebiegu z ośmioma rolkami, a każda rolka ma cyfry od 0 do 9, a następnie od A do F. Jeśli zaczniesz od 00000000, a następnie trzykrotnie klikniesz licznik wstecz, skończysz na FFFFFFFD. Aby uzyskać więcej informacji: dowiedz się o uzupełnieniu dwójkowym, szesnastkowym i dwójkowym.
Bavi_H,