Di mana informasi tentang posisi jendela disimpan?

9

Di mana informasi tentang posisi jendela disimpan?

Contoh: Saya mulai notepad.exe, dan itu dimulai tidak diminimalkan atau dimaksimalkan, tetapi hanya jendela ukuran sedang di tengah layar. Jika saya menutupnya dan memulainya lagi, itu pada koordinat XY yang sama. Tetapi kemudian jika saya menutupnya saat berada di bagian bawah layar, itu akan mulai lagi di bagian bawah (yang bertentangan dengan midlle) layar.

Jika saya ingin mengubah posisi XY jendela secara manual sehingga terbuka di lokasi yang tidak standar, apa yang harus saya edit?

Mungkin registri, tetapi di mana?

BenjiWiebe
sumber

Jawaban:

8

Setiap program menyimpan informasi tentang jendelanya dengan caranya sendiri. Untuk Notepad, saya menemukan yang berikut ini di registri Windows XP saya.

Di registri, buka folder berikut

HKEY_CURRENT_USER\Software\Microsoft\Notepad

kemudian ubah nilai berikut

iWindowPosX
iWindowPosY
iWindowPosDX
iWindowPosDY

X dan Y adalah koordinat sudut kiri atas jendela. DX dan DY adalah lebar dan tinggi jendela.

Program lain mungkin menyimpan informasi posisi jendela di registri atau file pengaturan lainnya.

Bavi_H
sumber
Jadi setiap program harus menangani data pemosisiannya sendiri ??
BenjiWiebe
Saya berharap bahwa Windows menanganinya. Tapi saya punya gelombang otak. Saya mengkompilasi program GUI Win32 yang sangat mendasar, dan melihat melalui kode untuk menemukan kode pengaturan posisi. Yang saya temukan hanyalah garis yang memberitahu Windows untuk memposisikan program. Windows kemudian memposisikan program seperti program konsol mana pun - sudut kiri atas, lalu sedikit lebih rendah dan ke kanan, lalu lebih rendah lagi, sampai akhirnya mengatur ulang ke sudut kiri atas. Demo: ketik start10 kali ke dalam test.batdan jalankan.
BenjiWiebe
Saya baru saja melihat bahwa iWindowPosX diatur ke fffffffd (4294967293) dalam kasus saya. Adakah yang tahu bagaimana angka besar itu bekerja?
Karan
@ BenjiWiebe Mereka adalah hal-hal yang berbeda: 1. Jika suatu program mengingat posisi jendela sehingga dapat menempatkannya di tempat yang sama lain kali, maka program dapat memilih bagaimana dan di mana ia menyimpan koordinat dan ukuran jendela. Itu bisa menyimpan nilai dalam registri, file teks, atau cara lain. 2. Jika Anda menulis program yang membuat jendela, Anda harus dapat menentukan posisi dan ukuran jendela saat membuat jendela. Saya kira jika Anda tidak menentukannya, Windows akan memilih penempatan default seperti yang Anda jelaskan. Mungkin Anda bisa mendapatkan panduan yang lebih spesifik di forum pemrograman.
Bavi_H
1
@ Karan Angka itu adalah -3 ketika bit diperlakukan sebagai nilai yang ditandatangani. Secara singkat: bayangkan odometer dengan delapan gulungan, dan setiap gulungan memiliki angka 0 hingga 9, kemudian A hingga F di atasnya. Jika Anda mulai dari 00000000 kemudian klik odometer mundur tiga kali, Anda berakhir di FFFFFFFD. Untuk lebih detail: pelajari tentang binary, hexadecimal, dan komplemen dua.
Bavi_H