Apa Itu Jendela?
Apa Itu Jendela?
Jelas, jendela adalah pusat windows. Mereka sangat penting sehingga mereka menamai sistem operasi setelah mereka. Tapi apa itu jendela? Ketika Anda memikirkan jendela, Anda mungkin memikirkan sesuatu seperti ini:
Jenis jendela ini disebut jendela aplikasi atau jendela utama. Biasanya memiliki bingkai dengan bilah judul, tombol Minimalkan dan Maksimalkan , dan elemen UI standar lainnya. Bingkai disebut area non-klien jendela, dipanggil karena sistem operasi mengelola bagian jendela tersebut. Area dalam bingkai adalah area klien. Ini adalah bagian dari jendela yang dikelola program Anda.
Berikut adalah jenis jendela lainnya:
Jika Anda baru menggunakan pemrograman Windows, mungkin mengejutkan Anda bahwa kontrol UI, seperti tombol dan kotak edit, adalah jendela itu sendiri. Perbedaan utama antara kontrol UI dan jendela aplikasi adalah bahwa kontrol tidak ada dengan sendirinya. Sebaliknya, kontrol diposisikan relatif terhadap jendela aplikasi. Saat Anda menyeret jendela aplikasi, kontrol bergerak dengannya, seperti yang Anda harapkan. Selain itu, kontrol dan jendela aplikasi dapat berkomunikasi satu sama lain. (Misalnya, jendela aplikasi menerima pemberitahuan klik dari tombol.)
Oleh karena itu, ketika Anda berpikir jendela, jangan hanya berpikir jendela aplikasi. Sebaliknya, anggap jendela sebagai konstruksi pemrograman yang:
- Menempati bagian layar tertentu.
- Mungkin atau mungkin tidak terlihat pada saat tertentu.
- Tahu cara menggambar sendiri.
- Menanggapi peristiwa dari pengguna atau sistem operasi.
Windows induk dan Windows Pemilik
Dalam kasus kontrol UI, jendela kontrol dikatakan sebagai anak dari jendela aplikasi. Jendela aplikasi adalah induk dari jendela kontrol. Jendela induk menyediakan sistem koordinat yang digunakan untuk memposisikan jendela anak. Memiliki jendela induk mempengaruhi aspek penampilan jendela; misalnya, jendela anak diklip sehingga tidak ada bagian jendela anak yang dapat muncul di luar batas jendela induknya.
Hubungan lain adalah hubungan antara jendela aplikasi dan jendela dialog modal. Ketika aplikasi menampilkan dialog modal, jendela aplikasi adalah jendela pemilik , dan dialog adalah jendela yang dimiliki . Jendela yang dimiliki selalu muncul di depan jendela pemiliknya. Ini disembunyikan ketika pemilik diminimalkan, dan dihancurkan pada saat yang sama dengan pemiliknya.
Gambar berikut menunjukkan aplikasi yang menampilkan kotak dialog dengan dua tombol:
Jendela aplikasi memiliki jendela dialog, dan jendela dialog adalah induk dari kedua jendela tombol. Diagram berikut menunjukkan hubungan ini:
Handel Jendela
Windows adalah objek—mereka memiliki kode dan data—tetapi bukan kelas C++. Sebagai gantinya, program mereferensikan jendela dengan menggunakan nilai yang disebut handel. Handel adalah jenis buram. Pada dasarnya, itu hanyalah angka yang digunakan sistem operasi untuk mengidentifikasi objek. Anda dapat membayangkan Windows sebagai memiliki tabel besar dari semua jendela yang telah dibuat. Ini menggunakan tabel ini untuk mencari jendela dengan gagangnya. (Apakah itu persis bagaimana cara kerjanya secara internal tidak penting.) Jenis data untuk handel jendela adalah HWND, yang biasanya diucapkan "aitch-wind." Handel jendela dikembalikan oleh fungsi yang membuat windows: CreateWindow dan CreateWindowEx.
Untuk melakukan operasi pada jendela, Anda biasanya akan memanggil beberapa fungsi yang mengambil nilai HWND sebagai parameter. Misalnya, untuk memposisikan ulang jendela di layar, panggil fungsi MoveWindow :
BOOL MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint);
Parameter pertama adalah handel ke jendela yang ingin Anda pindahkan. Parameter lain menentukan lokasi baru jendela dan apakah jendela harus digambar ulang.
Perlu diingat bahwa handel bukan pointer. Jika hwnd adalah variabel yang berisi handel, mencoba mendereferensikan handel dengan menulis *hwnd
adalah kesalahan.
Koordinat Layar dan Jendela
Koordinat diukur dalam piksel independen perangkat. Kita akan memiliki lebih banyak hal untuk dikatakan tentang bagian independen perangkat dari piksel independen perangkat ketika kita membahas grafik.
Bergantung pada tugas, Anda dapat mengukur koordinat relatif terhadap layar, relatif terhadap jendela (termasuk bingkai), atau relatif terhadap area klien jendela. Misalnya, Anda akan memposisikan jendela di layar menggunakan koordinat layar, tetapi Anda akan menggambar di dalam jendela menggunakan koordinat klien. Dalam setiap kasus, asal (0, 0) selalu merupakan sudut kiri atas wilayah tersebut.
Berikutnya