Bagikan melalui


Fitur Kotak Kombo

Dokumen ini membahas fitur kotak kombo. Untuk informasi selengkapnya, lihat topik berikut ini:

Fitur Khusus

Ada pesan dan fungsi tujuan khusus yang memungkinkan aplikasi menampilkan daftar direktori dalam kotak kombo, mengaitkan data dengan item daftar dalam kotak kombo, dan mengubah antarmuka keyboard untuk kotak kombo drop-down atau kotak daftar drop-down.

Daftar Direktori

Aplikasi dapat menambahkan nama file atau subdirektori ke kotak kombo dengan mengirim pesan CB_DIR ke dalamnya. Parameter wParam untuk pesan ini menentukan atribut file yang akan ditambahkan, dan parameter lParam adalah penunjuk ke string teks yang menentukan spesifikasi file.

Anda dapat menggunakan fungsi DlgDirListComboBox untuk mengganti konten kotak kombo dalam kotak dialog. Fungsi mengisi kotak kombo dengan nama drive, direktori, dan file yang cocok dengan serangkaian kriteria yang ditentukan. Fungsi DlgDirSelectComboBoxEx mengambil pilihan saat ini dalam kotak kombo yang diinisialisasi oleh DlgDirListComboBox. Fungsi-fungsi ini memungkinkan pengguna untuk memilih drive, direktori, atau file dari kotak kombo tanpa mengetik lokasi dan nama file.

Fungsi DlgDirListComboBox dan DlgDirSelectComboBoxEx dan pesan CB_DIR mirip dengan fungsiDlgDirListdan DlgDirSelectEx dan pesan LB_DIR yang digunakan dengan kotak daftar.

Data yang Terkait dengan Item Daftar

Aplikasi dapat mengaitkan data dengan item daftar dalam kotak kombo. Pesan CB_SETITEMDATA mengaitkan nilai DWORD dengan item daftar, dan CB_GETITEMDATA mengambil nilai yang terkait dengan item daftar.

Contoh dalam Membuat Kotak Kombo Yang Digambar Pemilik menggunakan data item untuk mengaitkan konstanta dengan setiap item dalam kotak daftar drop-down. Nilai unik tersebut mengidentifikasi setiap item yang independen dari posisi yang diurutkannya.

Aplikasi lain mungkin menggunakan data item untuk mengaitkan handel atau penunjuk dengan item daftar. Jika demikian, aplikasi dapat memproses pesan WM_DELETEITEM untuk menghapus atau membebaskan objek yang ditentukan saat item daftar dihapus.

Antarmuka Pengguna yang Diperluas

Kotak kombo drop-down dan kotak daftar drop-down mendukung antarmuka keyboard alternatif yang disebut antarmuka pengguna diperluas. Secara default, tombol F4 membuka atau menutup daftar, dan PANAH BAWAH mengubah pilihan saat ini. Namun, dalam kotak kombo dengan antarmuka pengguna yang diperluas, tombol F4 dinonaktifkan dan menekan tombol PANAH BAWAH membuka daftar drop-down. Selain itu, roda mouse, yang biasanya menggulir item dalam daftar, tidak memiliki fungsi apa pun ketika UI yang diperluas diatur.

Untuk memilih antarmuka pengguna untuk kotak kombo, aplikasi dapat mengirim pesan CB_SETEXTENDEDUI ke kotak kombo. Nilai TRUE untuk parameter wParam memungkinkan antarmuka pengguna yang diperluas; nilai FALSE menetapkan antarmuka pengguna default. Untuk menentukan apakah kotak kombo menggunakan antarmuka pengguna yang diperluas, aplikasi dapat mengirim pesan CB_GETEXTENDEDUI ke kotak kombo.

Spanduk Isti Ulur

Banner isian adalah fitur baru kontrol edit dan kotak kombo. Tujuan banner isyarat adalah untuk memberikan petunjuk kepada pengguna tentang tujuan kontrol edit atau kotak kombo. Cuplikan layar berikut menunjukkan kontrol edit dengan teks iseng "Cari".

cuplikan layar kontrol edit dengan teks iseng

Teks banner isian ditampilkan ketika kontrol edit tidak memiliki teks atau kotak kombo tidak memiliki pilihan. Saat pengguna memasukkan teks ke dalam kontrol edit atau membuat pilihan dalam kotak kombo, banner isis menghilang. Secara default, banner isian juga menghilang ketika kontrol edit atau kotak kombo menerima fokus.

Pemberitahuan Kotak Kombo

Pesan dari kotak kombo dikirim sebagai kode pemberitahuan dalam bentuk pesan WM_COMMAND. Kode pemberitahuan disimpan dalam kata tinggi parameter wParam, dan aplikasi dapat memproses kode pemberitahuan kotak kombo berikut.

Kode pemberitahuan Deskripsi
CBN_CLOSEUP Menunjukkan daftar dalam kotak kombo turun bawah atau kotak daftar drop-down akan ditutup.
CBN_DBLCLK Menunjukkan bahwa pengguna telah mengeklik dua kali item daftar dalam kotak kombo sederhana.
CBN_DROPDOWN Menunjukkan daftar dalam kotak kombo drop-down atau kotak daftar drop-down akan terbuka.
CBN_EDITCHANGE Menunjukkan bahwa pengguna telah mengubah teks dalam kontrol edit kotak kombo sederhana atau turun bawah. Kode pemberitahuan ini dikirim setelah teks yang diubah ditampilkan.
CBN_EDITUPDATE Menunjukkan bahwa pengguna telah mengubah teks dalam kontrol edit kotak kombo sederhana atau turun bawah. Kode pemberitahuan ini dikirim sebelum teks yang diubah ditampilkan.
CBN_ERRSPACE Menunjukkan kotak kombo tidak dapat mengalokasikan cukup memori untuk melakukan permintaan, seperti menambahkan item daftar.
CBN_KILLFOCUS Menunjukkan kotak kombo akan kehilangan fokus input.
CBN_SELCHANGE Menunjukkan bahwa pilihan saat ini telah berubah.
CBN_SELENDCANCEL Menunjukkan bahwa pilihan yang dibuat di daftar drop-down, saat dijatuhkan, harus diabaikan.
CBN_SELENDOK Menunjukkan bahwa pilihan yang dibuat daftar menurun, saat dijatuhkan, harus diterima.
CBN_SETFOCUS Menunjukkan kotak kombo telah menerima fokus input.

 

Perilaku Kotak Kombo Default

Tabel berikut ini menjelaskan pesan yang secara khusus ditangani oleh prosedur jendela kelas COMBOBOX yang telah ditentukan sebelumnya.

Pesan Deskripsi
CB_ADDSTRING Mengirim pesan LB_ADDSTRING ke jendela daftar untuk menambahkan item daftar.
CB_DELETESTRING Mengirim pesan LB_DELETESTRING ke jendela daftar untuk menghapus item daftar.
CB_DIR Menambahkan nama file yang cocok dengan atribut dan jalur yang ditentukan ke daftar.
CB_FINDSTRING Mengirim pesan LB_FINDSTRING ke jendela daftar. Pesan ini mengembalikan indeks item daftar pertama yang dimulai dengan teks yang ditentukan.
CB_FINDSTRINGEXACT Mengirim pesan LB_FINDSTRING ke jendela daftar. Pesan ini mengembalikan indeks item daftar pertama yang sama persis dengan teks yang ditentukan.
CB_GETCOUNT Mengirim pesan LB_GETCOUNT ke jendela daftar. Ini mengembalikan jumlah item daftar.
CB_GETCURSEL Mengirim pesan LB_GETCURSEL ke jendela daftar. Ini mengembalikan indeks item yang saat ini dipilih, jika ada.
CB_GETDROPPEDCONTROLRECT Mengisi struktur persegi panjang yang ditentukan dengan koordinat layar daftar drop-down.
CB_GETDROPPEDSTATE Mengembalikan TRUE jika daftar drop-down terbuka; jika tidak, ia mengembalikan FALSE.
CB_GETDROPPEDWIDTH Mengembalikan lebar minimum yang diizinkan, dalam piksel, dari daftar drop-down.
CB_GETEDITSEL Mengirim pesan EM_GETSEL ke kontrol edit, dan mengembalikan posisi awal dan akhir pilihan saat ini. Dalam kotak daftar drop-down, prosedur jendela mengembalikan CB_ERR.
CB_GETEXTENDEDUI Mengembalikan TRUE jika kotak kombo adalah kotak kombo drop-down atau kotak daftar drop-down dan bendera perluas antarmuka pengguna diatur; jika tidak, ia mengembalikan FALSE.
CB_GETHORIZONTALEXTENT Mengirim pesan LB_GETHORIZONTALEXTENT ke jendela daftar. Ini mengembalikan lebar yang dapat digulir, dalam piksel, dari daftar drop-down.
CB_GETITEMDATA Mengirim pesan LB_GETITEMDATA ke jendela daftar. Ini mengembalikan nilai yang terkait dengan item daftar yang ditentukan.
CB_GETITEMHEIGHT Mengirim pesan LB_GETITEMHEIGHT ke jendela daftar. Ini mengembalikan tinggi, dalam piksel, dari item daftar yang digambar pemilik yang ditentukan.
CB_GETLBTEXT Mengirim pesan LB_GETTEXT ke jendela daftar. Ini menyalin teks daftar yang ditentukan ke buffer yang ditentukan.
CB_GETLBTEXTLEN Mengirim pesan LB_GETTEXTLEN ke jendela daftar. Ini mengembalikan panjang, dalam TCHAR, dari teks daftar yang ditentukan.
CB_GETLOCALE Mengirim pesan LB_GETLOCALE ke jendela daftar. Ini mengembalikan lokal saat ini untuk daftar.
CB_GETMINVISIBLE Mendapatkan jumlah minimum item yang terlihat dalam daftar drop-down kotak kombo.
CB_GETTOPINDEX Mengirim pesan LB_GETTOPINDEX ke jendela daftar. Ini mengembalikan indeks item pertama yang terlihat di daftar drop-down.
CB_INITSTORAGE Mengirim pesan LB_INITSTORAGE ke jendela daftar. Ini menginisialisasi spasi untuk jumlah item yang ditentukan dan jumlah byte yang ditentukan untuk string item.
CB_INSERTSTRING Mengirim pesan LB_INSERTSTRING ke jendela daftar. Ini menyisipkan item daftar pada posisi yang ditentukan.
CB_LIMITTEXT Mengirim pesan EM_LIMITTEXT ke kontrol edit. Ini mengatur jumlah maksimum karakter yang dapat dimasukkan pengguna dalam kontrol edit. Dalam kotak daftar drop-down, prosedur jendela mengembalikan CB_ERR.
CB_RESETCONTENT Mengirim pesan LB_RESETCONTENT ke jendela daftar, dan menghapus isi daftar.
CB_SELECTSTRING Mengirim pesan LB_SELECTSTRING ke jendela daftar. Ini memilih item daftar pertama, jika ada, yang dimulai dengan karakter dalam teks yang ditentukan.
CB_SETCURSEL Mengirim pesan LB_SETCURSEL ke jendela daftar, dan mengatur pilihan saat ini.
CB_SETDROPPEDWIDTH Mengatur lebar minimum yang diizinkan, dalam piksel, dari daftar drop-down.
CB_SETEDITSEL Mengirim pesan EM_SETSEL ke kontrol edit. Ini memilih rentang teks yang ditentukan. Dalam kotak daftar drop-down, prosedur jendela mengembalikan CB_ERR.
CB_SETEXTENDEDUI Mengatur atau menghapus bendera antarmuka pengguna yang diperluas. Bendera ini mengubah kunci yang membuka dan menutup daftar dalam kotak kombo turun bawah atau kotak daftar drop-down. Jika kotak kombo adalah kotak kombo sederhana, prosedur jendela mengembalikan CB_ERR.
CB_SETHORIZONTALEXTENT Mengirim pesan LB_SETHORIZONTALEXTENT ke jendela daftar. Ini mengatur lebar yang dapat digulir, dalam piksel, dari daftar drop-down.
CB_SETITEMDATA Mengirim pesan LB_SETITEMDATA ke jendela daftar. Ini mengaitkan nilai yang ditentukan dengan item daftar.
CB_SETITEMHEIGHT Mengirim pesan LB_SETITEMHEIGHT ke jendela daftar. Ini mengatur tinggi item daftar yang digambar pemilik yang ditentukan atau bidang pilihan.
CB_SETLOCALE Mengirim pesan LB_SETLOCALE ke jendela daftar, dan mengatur lokal saat ini untuk daftar. Lokal memengaruhi cara daftar diurutkan jika memiliki gaya dan string CBS_SORT ditambahkan menggunakan CB_ADDSTRING.
CB_SETMINVISIBLE Mengatur jumlah minimum item yang terlihat dalam daftar drop-down kotak kombo.
CB_SETTOPINDEX Mengirim pesan LB_SETTOPINDEX ke jendela daftar. Ini menggulir daftar drop-down sehingga item yang ditentukan berada di bagian atas rentang yang terlihat.
CB_SHOWDROPDOWN Memperlihatkan atau menyembunyikan daftar drop-down. Pesan ini tidak berpengaruh pada kotak kombo sederhana.
WM_CHAR Memproses input karakter. Dalam kotak daftar drop-down, pesan ini diteruskan ke jendela daftar, yang memindahkan pilihan ke item pertama yang dimulai dengan karakter yang ditentukan. Dalam kotak kombo sederhana dan drop-down, pesan ini diteruskan ke kontrol edit.
WM_CLEAR Menghapus pilihan edit. Dalam kotak kombo sederhana dan drop-down, kontrol edit memproses pesan ini. Dalam kotak daftar drop-down, prosedur jendela mengembalikan CB_ERR.
WM_COMMAND Memproses pesan pemberitahuan dari kontrol edit dan jendela daftar dan mengirim kode pemberitahuan kotak kombo yang sesuai ke jendela induk.
Untuk pemberitahuan kontrol edit, prosedur jendela dapat memperbarui pilihan jendela daftar saat ini, indeks tanda sisipan, dan indeks teratas. Untuk pesan pemberitahuan daftar, prosedur jendela dapat memperbarui konten bidang pilihan.
WM_COMPAREITEM Meneruskan pesan ke jendela induk, memungkinkan aplikasi untuk menentukan posisi pengurutan relatif dari dua item daftar yang digambar pemilik. Jendela kotak kombo menerima pesan ini dari jendela daftar.
WM_COPY Menyalin pilihan edit ke papan klip. Dalam kotak kombo sederhana dan drop-down, kontrol edit memproses pesan ini. Dalam kotak daftar drop-down, prosedur jendela mengembalikan CB_ERR.
WM_CREATE Menginisialisasi kotak kombo.
WM_CUT Menghapus pilihan edit dan menempatkannya pada papan klip. Dalam kotak kombo sederhana dan drop-down, kontrol edit memproses pesan ini. Dalam kotak daftar drop-down, prosedur jendela mengembalikan CB_ERR.
WM_DELETEITEM Meneruskan pesan ke jendela induk, memberi tahu aplikasi bahwa item daftar telah dihapus. Jendela kotak kombo menerima pesan ini dari jendela daftar.
WM_DRAWITEM Meneruskan pesan ke jendela induk yang memungkinkan aplikasi melukis item daftar yang ditentukan. Jendela kotak kombo menerima pesan ini dari jendela daftar. Prosedur jendela juga dapat memulai pesan ini agar aplikasi mengecat bidang pilihan dari kotak daftar drop-down.
WM_ENABLE Mengatur status untuk mengaktifkan atau melarang input mouse dan keyboard.
WM_ERASEBKGND Mengembalikan 1, menunjukkan bahwa latar belakang dihapus.
WM_GETDLGCODE Mengembalikan kombinasi nilai DLG_WANTCHARS dan DLGC_WANTARROWS.
WM_GETFONT Mengembalikan handel ke font saat ini di mana kotak kombo akan menggambar teksnya.
WM_GETTEXT Menyalin isi bidang pilihan ke buffer yang ditentukan. Dalam kotak kombo sederhana dan drop-down, kontrol edit memproses pesan ini.
WM_GETTEXTLENGTH Mengembalikan panjang, dalam karakter, dari teks di bidang pilihan. Dalam kotak kombo sederhana dan drop-down, kontrol edit memproses pesan ini.
WM_KEYDOWN Memproses input keyboard noncharacter. Dalam kotak daftar drop-down, pesan ini dikirim ke jendela daftar, yang mungkin memperlihatkan atau menyembunyikan dirinya sendiri, atau mengubah pilihan atau indeks tanda sisipan saat ini. Dalam kotak kombo sederhana dan drop-down, pesan ini diteruskan ke kontrol edit. Kontrol edit meneruskan kunci tertentu ke jendela daftar, seperti tombol PANAH ATAS dan BAWAH dan tombol F4.
WM_KILLFOCUS Menyembunyikan sorotan di bidang pilihan dan menutup daftar drop-down, jika perlu. Jika jendela yang menerima fokus input adalah bagian dari kotak kombo (misalnya, kontrol edit), pesan ini diabaikan.
WM_LBUTTONDBLCLK Sama seperti WM_LBUTTONDOWN.
WM_LBUTTONDOWN Mengatur fokus ke kotak kombo dan, untuk kotak kombo drop-down dan daftar drop-down, dapat membuka atau menutup daftar. Jika membuka daftar, prosedur jendela mengambil mouse untuk mengaktifkan pilihan dengan menyeret dan melepaskan tombol mouse.
WM_LBUTTONUP Melepaskan tangkapan mouse jika mouse membuka daftar.
WM_MEASUREITEM Memposting pesan ke jendela induk, memungkinkan aplikasi untuk memodifikasi konten strukturMEASUREITEMSTRUCT yang ditentukan. Jendela kotak kombo menerima pesan ini dari jendela daftar.
WM_MOUSEMOVE Memposting pesan ke jendela daftar jika mouse telah membuka daftar dan tombol mouse masih tidak berfungsi. Ini memungkinkan pengguna untuk memilih item dengan menyeret penunjuk mouse ke item daftar lalu merilis tombol.
WM_NCCREATE Mengalokasikan struktur data internal yang digunakan oleh prosedur jendela kotak kombo.
WM_NCDESTROY Membebaskan sumber daya yang dialokasikan sebagai respons terhadap pesan WM_NCCREATE.
WM_PAINT Mengecat wilayah kotak kombo yang tidak valid. Jika wParam tidak null, diasumsikan sebagai handel konteks perangkat (DC) yang diteruskan dari fungsi subkelas. Prosedur jendela menggunakan DC yang ditentukan alih-alih memanggil BeginPaint dan EndPaint.
WM_PASTE Mengganti pilihan edit dengan isi papan klip. Dalam kotak kombo sederhana dan drop-down, kontrol edit memproses pesan ini. Dalam kotak daftar drop-down, prosedur jendela mengembalikan CB_ERR.
WM_SETFOCUS Mengatur fokus ke kontrol edit atau, dalam kotak daftar drop-down, membalikkan bidang pilihan dan mengaktifkan tanda sisipan di jendela daftar.
WM_SETFONT Menyimpan handel font yang ditentukan dalam struktur internal, menyesuaikan dimensi bidang dan daftar pilihan, dan membatalkan jendela kotak kombo. Teks di bidang pilihan dan daftar ditampilkan dalam font tersimpan.
WM_SETREDRAW Mengatur atau menghapus bendera redraw. Jika bendera redraw dikosongkan, kotak kombo tidak dicat ulang hingga bendera diatur lagi.
WM_SETTEXT Mengatur isi kontrol edit. Dalam kotak kombo sederhana dan drop-down, kontrol edit memproses pesan ini. Dalam kotak daftar drop-down, prosedur jendela mengembalikan CB_ERR.
WM_SIZE Mengubah ukuran jendela anak, jika perlu.
WM_SYSKEYDOWN Membuka atau menutup daftar drop-down tergantung pada tombol panah mana yang ditekan pengguna.

 

Semua pesan lain diteruskan ke fungsiDefWindowProc untuk pemrosesan default.