Mengontrol Pesan
Bagian ini berisi informasi tentang bagaimana pesan Windows digunakan untuk berkomunikasi dengan kontrol.
Topik berikut dibahas.
Pesan ke Kontrol Umum
Karena kontrol umum adalah jendela, aplikasi dapat berkomunikasi dengan mereka dengan menggunakan pesan Microsoft Win32 umum seperti WM_GETFONT atau WM_SETTEXT. Selain itu, kelas jendela dari setiap kontrol umum mendukung serangkaian pesan khusus kontrol. Biasanya, aplikasi menggunakan SendMessage atau SendDlgItemMessage untuk meneruskan pesan ke kontrol (sering menerima informasi dalam nilai pengembalian).
Beberapa kontrol umum juga memiliki sekumpulan makro yang dapat digunakan aplikasi alih-alih SendMessage. Makro biasanya lebih mudah digunakan daripada fungsi. Contoh kode berikut mengambil teks item tampilan pohon yang dipilih, pertama dengan menggunakan pesan mentah, dan kedua dengan menggunakan makro yang setara. Asumsikan bahwa hwnd adalah handel jendela kontrol.
BOOL fSuccess;
WCHAR itemText[99];
TVITEM tvItem = { 0 };
tvItem.mask = TVIF_TEXT;
tvItem.cchTextMax = ARRAYSIZE(itemText);
tvItem.pszText = itemText;
// This...
tvItem.hItem = (HTREEITEM)SendMessage(hwnd, TVM_GETNEXTITEM, TVGN_CARET, NULL);
fSuccess = SendMessage(hwnd, TVM_GETITEM, 0, (LPARAM)&tvItem);
// ... is equivalent to this.
tvItem.hItem = TreeView_GetSelection(hwnd);
fSuccess = TreeView_GetItem(hwnd, &tvItem);
Ketika perubahan dilakukan pada pengaturan warna sistem, Windows mengirim pesan WM_SYSCOLORCHANGE ke semua jendela tingkat atas. Jendela tingkat atas Anda harus meneruskan pesan WM_SYSCOLORCHANGE ke kontrol umumnya; jika tidak, kontrol tidak akan diberi tahu tentang perubahan warna. Meneruskan pesan memastikan bahwa warna yang digunakan oleh kontrol umum Anda konsisten dengan yang digunakan oleh objek antarmuka pengguna lainnya. Misalnya, kontrol toolbar menggunakan warna "Objek 3-D" untuk menggambar tombolnya. Jika pengguna mengubah warna Objek 3-D tetapi pesan WM_SYSCOLORCHANGE tidak diteruskan ke toolbar, tombol toolbar akan tetap dalam warna aslinya (atau bahkan berubah menjadi kombinasi warna lama dan baru) sementara warna tombol lain dalam sistem berubah.
Pemberitahuan dari Kontrol
Kontrol adalah jendela anak yang mengirim pesan pemberitahuan ke jendela induk ketika peristiwa, biasanya dipicu oleh input dari pengguna, terjadi dalam kontrol. Aplikasi bergantung pada pesan pemberitahuan ini untuk menentukan tindakan apa yang ingin diambil pengguna. Kecuali untuk trackbar, yang menggunakan pesan WM_HSCROLL dan WM_VSCROLL untuk memberi tahu induk perubahannya, kontrol umum mengirim pemberitahuan sebagai pesan WM_COMMAND atau WM_NOTIFY, seperti yang ditentukan dalam topik referensi untuk pemberitahuan. Biasanya, pemberitahuan yang lebih lama (yang telah berada di API untuk waktu yang lama) menggunakan WM_COMMAND.
Parameter lParam dari WM_NOTIFY adalah alamat struktur NMHDR atau alamat struktur yang lebih besar yang mencakup NMHDR sebagai anggota pertamanya. Struktur berisi kode pemberitahuan dan mengidentifikasi kontrol umum yang mengirim pesan pemberitahuan. Arti anggota struktur yang tersisa, jika ada, bervariasi tergantung pada kode pemberitahuan.
Setiap jenis kontrol umum memiliki sekumpulan kode pemberitahuan yang sesuai. Pustaka kontrol umum juga menyediakan kode pemberitahuan yang dapat dikirim oleh lebih dari satu jenis kontrol umum. Lihat dokumentasi untuk kontrol minat guna menentukan kode pemberitahuan mana yang akan dikirimnya dan format apa yang mereka ambil.
Misalnya kode yang menunjukkan cara menangani pesan WM_NOTIFY , lihat topik referensi untuk pesan tersebut.
Topik terkait