CComboBox
Kelas
Menyediakan fungsionalitas kotak kombo Windows.
Sintaks
class CComboBox : public CWnd
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CComboBox::CComboBox |
Membuat CComboBox objek. |
Metode Publik
Nama | Deskripsi |
---|---|
CComboBox::AddString |
Menambahkan string ke akhir daftar dalam kotak daftar kotak kombo, atau pada posisi yang diurutkan untuk kotak daftar dengan CBS_SORT gaya. |
CComboBox::Clear |
Menghapus (menghapus) pilihan saat ini, jika ada, dalam kontrol edit. |
CComboBox::CompareItem |
Dipanggil oleh kerangka kerja untuk menentukan posisi relatif item daftar baru dalam kotak kombo yang digambar pemilik yang diurutkan. |
CComboBox::Copy |
Menyalin pilihan saat ini, jika ada, ke Clipboard dalam CF_TEXT format. |
CComboBox::Create |
Membuat kotak kombo dan melampirkannya ke CComboBox objek. |
CComboBox::Cut |
Menghapus (memotong) pilihan saat ini, jika ada, dalam kontrol edit dan menyalin teks yang dihapus ke Clipboard dalam CF_TEXT format. |
CComboBox::DeleteItem |
Dipanggil oleh kerangka kerja saat item daftar dihapus dari kotak kombo yang digambar pemilik. |
CComboBox::DeleteString |
Menghapus string dari kotak daftar kotak kombo. |
CComboBox::Dir |
Menambahkan daftar nama file ke kotak daftar kotak kombo. |
CComboBox::DrawItem |
Dipanggil oleh kerangka kerja ketika aspek visual kotak kombo yang digambar pemilik berubah. |
CComboBox::FindString |
Menemukan string pertama yang berisi awalan yang ditentukan dalam kotak daftar kotak kombo. |
CComboBox::FindStringExact |
Menemukan string kotak daftar pertama (dalam kotak kombo) yang cocok dengan string yang ditentukan. |
CComboBox::GetComboBoxInfo |
Mengambil informasi tentang CComboBox objek. |
CComboBox::GetCount |
Mengambil jumlah item dalam kotak daftar kotak kombo. |
CComboBox::GetCueBanner |
Mendapatkan teks isian yang ditampilkan untuk kontrol kotak kombo. |
CComboBox::GetCurSel |
Mengambil indeks item yang saat ini dipilih, jika ada, dalam kotak daftar kotak kombo. |
CComboBox::GetDroppedControlRect |
Mengambil koordinat layar kotak daftar yang terlihat (turun bawah) dari kotak kombo drop-down. |
CComboBox::GetDroppedState |
Menentukan apakah kotak daftar kotak kombo drop-down terlihat (turun bawah). |
CComboBox::GetDroppedWidth |
Mengambil lebar minimum yang diizinkan untuk bagian kotak daftar drop-down dari kotak kombo. |
CComboBox::GetEditSel |
Mendapatkan posisi karakter awal dan akhir dari pilihan saat ini dalam kontrol edit kotak kombo. |
CComboBox::GetExtendedUI |
Menentukan apakah kotak kombo memiliki antarmuka pengguna default atau antarmuka pengguna yang diperluas. |
CComboBox::GetHorizontalExtent |
Mengembalikan lebar dalam piksel yang bagian kotak daftar dari kotak kombo dapat digulir secara horizontal. |
CComboBox::GetItemData |
Mengambil nilai 32-bit yang disediakan aplikasi yang terkait dengan item kotak kombo yang ditentukan. |
CComboBox::GetItemDataPtr |
Mengambil pointer 32-bit yang disediakan aplikasi yang terkait dengan item kotak kombo yang ditentukan. |
CComboBox::GetItemHeight |
Mengambil tinggi item daftar dalam kotak kombo. |
CComboBox::GetLBText |
Mendapatkan string dari kotak daftar kotak kombo. |
CComboBox::GetLBTextLen |
Mendapatkan panjang string dalam kotak daftar kotak kombo. |
CComboBox::GetLocale |
Mengambil pengidentifikasi lokal untuk kotak kombo. |
CComboBox::GetMinVisible |
Mendapatkan jumlah minimum item yang terlihat dalam daftar drop-down kotak kombo saat ini. |
CComboBox::GetTopIndex |
Mengembalikan indeks item pertama yang terlihat dalam bagian kotak daftar dari kotak kombo. |
CComboBox::InitStorage |
Melakukan pra-alokasi blok memori untuk item dan string dalam bagian kotak daftar kotak kombo. |
CComboBox::InsertString |
Menyisipkan string ke dalam kotak daftar kotak kombo. |
CComboBox::LimitText |
Membatasi panjang teks yang dapat dimasukkan pengguna ke dalam kontrol edit kotak kombo. |
CComboBox::MeasureItem |
Dipanggil oleh kerangka kerja untuk menentukan dimensi kotak kombo saat kotak kombo yang digambar pemilik dibuat. |
CComboBox::Paste |
Menyisipkan data dari Papan Klip ke kontrol edit pada posisi kursor saat ini. Data disisipkan hanya jika Clipboard berisi data dalam CF_TEXT format. |
CComboBox::ResetContent |
Menghapus semua item dari kotak daftar dan mengedit kontrol kotak kombo. |
CComboBox::SelectString |
Mencari string dalam kotak daftar kotak kombo dan, jika string ditemukan, memilih string dalam kotak daftar dan menyalin string ke kontrol edit. |
CComboBox::SetCueBanner |
Mengatur teks isian yang ditampilkan untuk kontrol kotak kombo. |
CComboBox::SetCurSel |
Memilih string dalam kotak daftar kotak kombo. |
CComboBox::SetDroppedWidth |
Mengatur lebar minimum yang diizinkan untuk bagian kotak daftar drop-down dari kotak kombo. |
CComboBox::SetEditSel |
Memilih karakter dalam kontrol edit kotak kombo. |
CComboBox::SetExtendedUI |
Memilih antarmuka pengguna default atau antarmuka pengguna yang diperluas untuk kotak kombo yang memiliki CBS_DROPDOWN gaya atau CBS_DROPDOWNLIST . |
CComboBox::SetHorizontalExtent |
Mengatur lebar dalam piksel yang bagian kotak daftar dari kotak kombo dapat digulir secara horizontal. |
CComboBox::SetItemData |
Mengatur nilai 32-bit yang terkait dengan item yang ditentukan dalam kotak kombo. |
CComboBox::SetItemDataPtr |
Mengatur pointer 32-bit yang terkait dengan item yang ditentukan dalam kotak kombo. |
CComboBox::SetItemHeight |
Mengatur tinggi item daftar dalam kotak kombo atau tinggi bagian edit kontrol (atau teks statis) dari kotak kombo. |
CComboBox::SetLocale |
Mengatur pengidentifikasi lokal untuk kotak kombo. |
CComboBox::SetMinVisibleItems |
Mengatur jumlah minimum item yang terlihat dalam daftar drop-down kotak kombo saat ini. |
CComboBox::SetTopIndex |
Memberi tahu bagian kotak daftar dari kotak kombo untuk menampilkan item dengan indeks yang ditentukan di bagian atas. |
CComboBox::ShowDropDown |
Memperlihatkan atau menyembunyikan kotak daftar kotak kombo yang memiliki CBS_DROPDOWN gaya atau CBS_DROPDOWNLIST . |
Keterangan
Kotak kombo terdiri dari kotak daftar yang dikombinasikan dengan kontrol statis atau kontrol edit. Bagian kotak daftar kontrol dapat ditampilkan setiap saat atau hanya dapat menurun saat pengguna memilih panah drop-down di samping kontrol.
Item yang saat ini dipilih (jika ada) dalam kotak daftar ditampilkan dalam kontrol statis atau edit. Selain itu, jika kotak kombo memiliki gaya daftar drop-down, pengguna dapat mengetik karakter awal salah satu item dalam daftar, dan kotak daftar, jika terlihat, akan menyoroti item berikutnya dengan karakter awal tersebut.
Tabel berikut membandingkan tiga gaya kotak kombo.
Gaya | Saat kotak daftar terlihat | Kontrol statis atau edit |
---|---|---|
Sederhana | Selalu | Edit |
Drop-down | Ketika turun ke bawah | Edit |
Daftar drop-down | Ketika turun ke bawah | Statis |
Anda dapat membuat CComboBox
objek dari templat dialog atau langsung di kode Anda. Dalam kedua kasus, pertama-tama panggil konstruktor CComboBox
untuk membangun CComboBox
objek; lalu panggil Create
fungsi anggota untuk membuat kontrol dan melampirkannya ke CComboBox
objek.
Jika Anda ingin menangani pesan pemberitahuan Windows yang dikirim oleh kotak kombo ke induknya (biasanya kelas berasal dari CDialog
), tambahkan entri peta pesan dan fungsi anggota penanganan pesan ke kelas induk untuk setiap pesan.
Setiap entri peta pesan mengambil formulir berikut:
ON_Notification( id, memberFxn )
di mana id
menentukan ID jendela turunan dari kontrol kotak kombo yang mengirim pemberitahuan dan memberFxn
merupakan nama fungsi anggota induk yang telah Anda tulis untuk menangani pemberitahuan.
Prototipe fungsi induk adalah sebagai berikut:
afx_msg void memberFxn( );
Urutan pengiriman pemberitahuan tertentu tidak dapat diprediksi. Secara khusus, CBN_SELCHANGE
pemberitahuan dapat terjadi baik sebelum atau sesudah CBN_CLOSEUP
pemberitahuan.
Entri peta pesan potensial adalah sebagai berikut:
ON_CBN_CLOSEUP
(Windows 3.1 dan yang lebih baru.) Kotak daftar kotak kombo telah ditutup. Pesan pemberitahuan ini tidak dikirim untuk kotak kombo yang memilikiCBS_SIMPLE
gaya.ON_CBN_DBLCLK
Pengguna mengeklik dua kali string dalam kotak daftar kotak kombo. Pesan pemberitahuan ini hanya dikirim untuk kotak kombo denganCBS_SIMPLE
gaya. Untuk kotak kombo denganCBS_DROPDOWN
gaya atauCBS_DROPDOWNLIST
, klik ganda tidak dapat terjadi karena satu klik menyembunyikan kotak daftar.ON_CBN_DROPDOWN
Kotak daftar kotak kombo akan menurun (dibuat terlihat). Pesan pemberitahuan ini hanya dapat terjadi untuk kotak kombo denganCBS_DROPDOWN
gaya atauCBS_DROPDOWNLIST
.ON_CBN_EDITCHANGE
Pengguna telah mengambil tindakan yang mungkin telah mengubah teks dalam bagian kontrol edit kotak kombo.CBN_EDITUPDATE
Tidak seperti pesan, pesan ini dikirim setelah Windows memperbarui layar. Ini tidak dikirim jika kotak kombo memilikiCBS_DROPDOWNLIST
gaya.ON_CBN_EDITUPDATE
Bagian edit kontrol dari kotak kombo akan menampilkan teks yang diubah. Pesan pemberitahuan ini dikirim setelah kontrol memformat teks tetapi sebelum menampilkan teks. Ini tidak dikirim jika kotak kombo memilikiCBS_DROPDOWNLIST
gaya.ON_CBN_ERRSPACE
Kotak kombo tidak dapat mengalokasikan cukup memori untuk memenuhi permintaan tertentu.ON_CBN_SELENDCANCEL
(Windows 3.1 dan yang lebih baru.) Menunjukkan pilihan pengguna harus dibatalkan. Pengguna mengklik item lalu mengklik jendela atau kontrol lain untuk menyembunyikan kotak daftar kotak kombo. Pesan pemberitahuan ini dikirim sebelumCBN_CLOSEUP
pesan pemberitahuan untuk menunjukkan bahwa pilihan pengguna harus diabaikan. PesanCBN_SELENDCANCEL
pemberitahuan atauCBN_SELENDOK
dikirim meskipunCBN_CLOSEUP
pesan pemberitahuan tidak dikirim (seperti dalam kasus kotak kombo denganCBS_SIMPLE
gaya).ON_CBN_SELENDOK
Pengguna memilih item lalu menekan tombol ENTER atau mengklik tombol PANAH BAWAH untuk menyembunyikan kotak daftar kotak kombo. Pesan pemberitahuan ini dikirim sebelumCBN_CLOSEUP
pesan untuk menunjukkan bahwa pilihan pengguna harus dianggap valid. PesanCBN_SELENDCANCEL
pemberitahuan atauCBN_SELENDOK
dikirim meskipunCBN_CLOSEUP
pesan pemberitahuan tidak dikirim (seperti dalam kasus kotak kombo denganCBS_SIMPLE
gaya).ON_CBN_KILLFOCUS
Kotak kombo kehilangan fokus input.ON_CBN_SELCHANGE
Pilihan dalam kotak daftar kotak kombo akan diubah sebagai hasil dari pengguna mengklik dalam kotak daftar atau mengubah pilihan dengan menggunakan tombol panah. Saat memproses pesan ini, teks dalam kontrol edit kotak kombo hanya dapat diambil melaluiGetLBText
atau fungsi serupa lainnya.GetWindowText
tidak dapat digunakan.ON_CBN_SETFOCUS
Kotak kombo menerima fokus input.
Jika Anda membuat CComboBox
objek dalam kotak dialog (melalui sumber daya dialog), CComboBox
objek secara otomatis dihancurkan saat pengguna menutup kotak dialog.
Jika Anda menyematkan CComboBox
objek di dalam objek jendela lain, Anda tidak perlu menghancurkannya. Jika Anda membuat CComboBox
objek pada tumpukan, objek akan dihancurkan secara otomatis. Jika Anda membuat CComboBox
objek pada tumpukan dengan menggunakan new
fungsi , Anda harus memanggil delete
pada objek untuk menghancurkannya ketika kotak kombo Windows dihancurkan.
Catatan Jika Anda ingin menangani WM_KEYDOWN
dan WM_CHAR
mengirim pesan, Anda harus mensubkelas kontrol kotak edit dan daftar kotak kombo, mendapatkan kelas dari CEdit
dan CListBox
, dan menambahkan handler untuk pesan tersebut ke kelas turunan. Untuk informasi selengkapnya, lihat CWnd::SubclassWindow
.
Hierarki Warisan
CComboBox
Persyaratan
Header: afxwin.h
CComboBox::AddString
Menambahkan string ke kotak daftar kotak kombo.
int AddString(LPCTSTR lpszString);
Parameter
lpszString
Menunjuk ke string null-terminated yang akan ditambahkan.
Tampilkan Nilai
Jika nilai yang dikembalikan lebih besar dari atau sama dengan 0, nilai tersebut adalah indeks berbasis nol ke string dalam kotak daftar. Nilai yang dikembalikan adalah CB_ERR
jika terjadi kesalahan; nilai yang dikembalikan adalah CB_ERRSPACE
jika ruang yang tidak mencukup tersedia untuk menyimpan string baru.
Keterangan
Jika kotak daftar tidak dibuat dengan CBS_SORT
gaya, string ditambahkan ke akhir daftar. Jika tidak, string disisipkan ke dalam daftar, dan daftar diurutkan.
Catatan
Fungsi ini tidak didukung oleh kontrol Windows ComboBoxEx
. Untuk informasi selengkapnya tentang kontrol ini, lihat ComboBoxEx
Kontrol di Windows SDK.
Untuk menyisipkan string ke lokasi tertentu dalam daftar, gunakan InsertString
fungsi anggota.
Contoh
// Add 20 items to the combo box.
CString str;
for (int i = 0; i < 20; i++)
{
str.Format(_T("item string %d"), i);
m_pComboBox->AddString(str);
}
CComboBox::CComboBox
Membuat CComboBox
objek.
CComboBox();
Contoh
// Declare a local CComboBox object.
CComboBox myComboBox;
// Declare a dynamic CComboBox object.
CComboBox *pmyComboBox = new CComboBox;
CComboBox::Clear
Menghapus (menghapus) pilihan saat ini, jika ada, dalam kontrol edit kotak kombo.
void Clear();
Keterangan
Untuk menghapus pilihan saat ini dan menempatkan konten yang dihapus ke Clipboard, gunakan Cut
fungsi anggota.
Contoh
// Delete all of the text from the combo box's edit control.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Clear();
CComboBox::CompareItem
Dipanggil oleh kerangka kerja untuk menentukan posisi relatif item baru dalam bagian kotak daftar dari kotak kombo gambar pemilik yang diurutkan.
virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
Parameter
lpCompareItemStruct
Pointer panjang ke COMPAREITEMSTRUCT
struktur.
Tampilkan Nilai
Menunjukkan posisi relatif dari dua item yang dijelaskan dalam COMPAREITEMSTRUCT
struktur. Ini bisa menjadi salah satu nilai berikut:
Nilai | Makna |
---|---|
-1 | Item 1 mengurutkan sebelum item 2. |
0 | Item 1 dan item 2 mengurutkan hal yang sama. |
1 | Item 1 mengurutkan setelah item 2. |
Lihat CWnd::OnCompareItem
untuk deskripsi .COMPAREITEMSTRUCT
Keterangan
Secara default, fungsi anggota ini tidak melakukan apa pun. Jika Anda membuat kotak kombo gambar pemilik dengan LBS_SORT
gaya, Anda harus mengambil alih fungsi anggota ini untuk membantu kerangka kerja dalam mengurutkan item baru yang ditambahkan ke kotak daftar.
Contoh
// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example compares two items using strcmp to sort items in reverse
// alphabetical order. The combo box control was created with the
// following code:
// pmyComboBox->Create(
// WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
// CBS_SORT|CBS_OWNERDRAWVARIABLE,
// myRect, pParentWnd, 1);
//
int CMyComboBox::CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct)
{
int iComp = 0;
ASSERT(lpCompareItemStruct->CtlType == ODT_COMBOBOX);
LPCTSTR lpszText1 = (LPCTSTR)lpCompareItemStruct->itemData1;
ASSERT(lpszText1 != NULL);
LPCTSTR lpszText2 = (LPCTSTR)lpCompareItemStruct->itemData2;
ASSERT(lpszText2 != NULL);
if (NULL != lpszText1 && NULL != lpszText2)
{
iComp = _tcscmp(lpszText2, lpszText1);
}
return iComp;
}
CComboBox::Copy
Menyalin pilihan saat ini, jika ada, dalam kontrol edit kotak kombo ke Clipboard dalam CF_TEXT
format.
void Copy();
Contoh
// Copy all of the text from the combo box's edit control
// to the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Copy();
CComboBox::Create
Membuat kotak kombo dan melampirkannya ke CComboBox
objek.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parameter
dwStyle
Menentukan gaya kotak kombo. Terapkan kombinasi gaya kotak kombo ke kotak.
rect
Menunjuk ke posisi dan ukuran kotak kombo. Bisa berupa RECT
struktur atau CRect
objek.
pParentWnd
Menentukan jendela induk kotak kombo (biasanya ).CDialog
Ini tidak boleh NULL
.
nID
Menentukan ID kontrol kotak kombo.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0.
Keterangan
Anda membuat CComboBox
objek dalam dua langkah. Pertama, panggil konstruktor lalu panggil Create
, yang membuat kotak kombo Windows dan melampirkannya ke CComboBox
objek.
Saat Create
dijalankan, Windows mengirim WM_NCCREATE
pesan , , WM_CREATE
WM_NCCALCSIZE
, dan WM_GETMINMAXINFO
ke kotak kombo.
Pesan ini ditangani secara default oleh OnNcCreate
fungsi anggota , , OnCreate
OnNcCalcSize
, dan OnGetMinMaxInfo
di CWnd
kelas dasar. Untuk memperluas penanganan pesan default, dapatkan kelas dari CComboBox
, tambahkan peta pesan ke kelas baru, dan ambil alih fungsi anggota penanganan pesan sebelumnya. Ambil alih OnCreate
, misalnya, untuk melakukan inisialisasi yang diperlukan untuk kelas baru.
Terapkan gaya jendela berikut ke kontrol kotak kombo. :
WS_CHILD
SelaluWS_VISIBLE
BiasanyaWS_DISABLED
JarangWS_VSCROLL
Untuk menambahkan pengguliran vertikal untuk kotak daftar dalam kotak komboWS_HSCROLL
Untuk menambahkan pengguliran horizontal untuk kotak daftar dalam kotak komboWS_GROUP
Untuk mengelompokkan kontrolWS_TABSTOP
Untuk menyertakan kotak kombo dalam urutan tab
Contoh
m_pComboBox->Create(
WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWNLIST,
CRect(10, 10, 200, 100), pParentWnd, 1);
CComboBox::Cut
Menghapus (memotong) pilihan saat ini, jika ada, dalam kontrol edit kotak kombo dan menyalin teks yang dihapus ke Clipboard dalam CF_TEXT
format.
void Cut();
Keterangan
Untuk menghapus pilihan saat ini tanpa menempatkan teks yang dihapus ke Clipboard, panggil Clear
fungsi anggota.
Contoh
// Delete all of the text from the combo box's edit control and copy it
// to the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Cut();
CComboBox::DeleteItem
Dipanggil oleh kerangka kerja saat pengguna menghapus item dari objek gambar CComboBox
pemilik atau menghancurkan kotak kombo.
virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
Parameter
lpDeleteItemStruct
Penunjuk panjang ke struktur Windows DELETEITEMSTRUCT
yang berisi informasi tentang item yang dihapus. Lihat CWnd::OnDeleteItem
untuk deskripsi struktur ini.
Keterangan
Implementasi default fungsi ini tidak melakukan apa pun. Ambil alih fungsi ini untuk menggambar ulang kotak kombo sesuai kebutuhan.
Contoh
// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example simply dumps the item's text. The combo box control was
// created with the following code:
// pmyComboBox->Create(
// WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
// CBS_SORT|CBS_OWNERDRAWVARIABLE,
// myRect, pParentWnd, 1);
//
void CMyComboBox::DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct)
{
ASSERT(lpDeleteItemStruct->CtlType == ODT_COMBOBOX);
LPTSTR lpszText = (LPTSTR)lpDeleteItemStruct->itemData;
ASSERT(lpszText != NULL);
AFXDUMP(lpszText);
}
CComboBox::DeleteString
Menghapus item dalam posisi nIndex
dari kotak kombo.
int DeleteString(UINT nIndex);
Parameter
nIndex
Menentukan indeks ke string yang akan dihapus.
Tampilkan Nilai
Jika nilai yang dikembalikan lebih besar dari atau sama dengan 0, maka nilai tersebut adalah hitungan string yang tersisa dalam daftar. Nilai pengembalian adalah CB_ERR
jika nIndex
menentukan indeks yang lebih besar dari jumlah item dalam daftar.
Keterangan
Semua item berikut nIndex
sekarang berpindah ke bawah satu posisi. Misalnya, jika kotak kombo berisi dua item, menghapus item pertama akan menyebabkan item yang tersisa sekarang berada di posisi pertama. nIndex
=0 untuk item di posisi pertama.
Contoh
// Delete every item from the combo box.
for (int i = m_pComboBox->GetCount() - 1; i >= 0; i--)
{
m_pComboBox->DeleteString(i);
}
CComboBox::Dir
Menambahkan daftar nama file atau drive ke kotak daftar kotak kombo.
int Dir(
UINT attr,
LPCTSTR lpszWildCard);
Parameter
attr
Bisa berupa kombinasi nilai apa pun yang enum
dijelaskan dalam CFile::GetStatus
atau kombinasi apa pun dari nilai berikut:
DDL_READWRITE
File dapat dibaca dari atau ditulis ke.DDL_READONLY
File dapat dibaca dari tetapi tidak ditulis ke.DDL_HIDDEN
File disembunyikan dan tidak muncul dalam daftar direktori.DDL_SYSTEM
File adalah file sistem.DDL_DIRECTORY
Nama yang ditentukan olehlpszWildCard
menentukan direktori.DDL_ARCHIVE
File telah diarsipkan.DDL_DRIVES
Sertakan semua drive yang cocok dengan nama yang ditentukan olehlpszWildCard
.DDL_EXCLUSIVE
Bendera eksklusif. Jika bendera eksklusif diatur, hanya file dari jenis yang ditentukan yang tercantum. Jika tidak, file dari jenis yang ditentukan dicantumkan selain file "normal".
lpszWildCard
Menunjuk ke string spesifikasi file. String dapat berisi kartubebas (misalnya, *.*
).
Tampilkan Nilai
Jika nilai yang dikembalikan lebih besar dari atau sama dengan 0, nilai tersebut adalah indeks berbasis nol dari nama file terakhir yang ditambahkan ke daftar. Nilai yang dikembalikan adalah CB_ERR
jika terjadi kesalahan; nilai yang dikembalikan adalah CB_ERRSPACE
jika ruang yang tidak mencukup tersedia untuk menyimpan string baru.
Keterangan
Fungsi ini tidak didukung oleh kontrol Windows ComboBoxEx
. Untuk informasi selengkapnya tentang kontrol ini, lihat ComboBoxEx
Kontrol di Windows SDK.
Contoh
// Add all the files and directories in the windows directory.
TCHAR lpszWinPath[MAX_PATH], lpszOldPath[MAX_PATH];
VERIFY(0 < ::GetWindowsDirectory(lpszWinPath, MAX_PATH));
// Make the windows directory the current directory.
::GetCurrentDirectory(MAX_PATH, lpszOldPath);
::SetCurrentDirectory(lpszWinPath);
m_pComboBox->ResetContent();
m_pComboBox->Dir(DDL_READWRITE | DDL_DIRECTORY, _T("*.*"));
// Reset the current directory to its previous path.
::SetCurrentDirectory(lpszOldPath);
CComboBox::DrawItem
Dipanggil oleh kerangka kerja saat aspek visual kotak kombo gambar pemilik berubah.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Parameter
lpDrawItemStruct
Penunjuk ke DRAWITEMSTRUCT
struktur yang berisi informasi tentang jenis gambar yang diperlukan.
Keterangan
Anggota itemAction
DRAWITEMSTRUCT
struktur mendefinisikan tindakan menggambar yang akan dilakukan. Lihat CWnd::OnDrawItem
untuk deskripsi struktur ini.
Secara default, fungsi anggota ini tidak melakukan apa pun. Ambil alih fungsi anggota ini untuk mengimplementasikan gambar untuk objek gambar CComboBox
pemilik. Sebelum fungsi anggota ini berakhir, aplikasi harus memulihkan semua objek antarmuka perangkat grafis (GDI) yang dipilih untuk konteks tampilan yang disediakan dalam lpDrawItemStruct
.
Contoh
// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example draws an item's text centered vertically and horizontally. The
// combo box control was created with the following code:
// pmyComboBox->Create(
// WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
// CBS_SORT|CBS_OWNERDRAWVARIABLE,
// myRect, pParentWnd, 1);
//
void CMyComboBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
ASSERT(lpDrawItemStruct->CtlType == ODT_COMBOBOX);
LPCTSTR lpszText = (LPCTSTR)lpDrawItemStruct->itemData;
ASSERT(lpszText != NULL);
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
// Save these value to restore them when done drawing.
COLORREF crOldTextColor = dc.GetTextColor();
COLORREF crOldBkColor = dc.GetBkColor();
// If this item is selected, set the background color
// and the text color to appropriate values. Erase
// the rect by filling it with the background color.
if ((lpDrawItemStruct->itemAction & ODA_SELECT) &&
(lpDrawItemStruct->itemState & ODS_SELECTED))
{
dc.SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
dc.SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));
dc.FillSolidRect(&lpDrawItemStruct->rcItem, ::GetSysColor(COLOR_HIGHLIGHT));
}
else
{
dc.FillSolidRect(&lpDrawItemStruct->rcItem, crOldBkColor);
}
// Draw the text.
dc.DrawText(
lpszText,
(int)_tcslen(lpszText),
&lpDrawItemStruct->rcItem,
DT_CENTER | DT_SINGLELINE | DT_VCENTER);
// Reset the background color and the text color back to their
// original values.
dc.SetTextColor(crOldTextColor);
dc.SetBkColor(crOldBkColor);
dc.Detach();
}
CComboBox::FindString
Menemukan, tetapi tidak memilih, string pertama yang berisi awalan yang ditentukan dalam kotak daftar kotak kombo.
int FindString(
int nStartAfter,
LPCTSTR lpszString) const;
Parameter
nStartAfter
Berisi indeks berbasis nol item sebelum item pertama yang akan dicari. Saat pencarian mencapai bagian bawah kotak daftar, pencarian berlanjut dari bagian atas kotak daftar kembali ke item yang ditentukan oleh nStartAfter
. Jika -1, seluruh kotak daftar dicari dari awal.
lpszString
Menunjuk ke string null-terminated yang berisi awalan yang akan dicari. Pencarian bersifat independen huruf besar/kecil, sehingga string ini dapat berisi kombinasi huruf besar dan huruf kecil.
Tampilkan Nilai
Jika nilai yang dikembalikan lebih besar dari atau sama dengan 0, nilai tersebut adalah indeks berbasis nol dari item yang cocok. CB_ERR
Ini adalah jika pencarian tidak berhasil.
Keterangan
Fungsi ini tidak didukung oleh kontrol Windows ComboBoxEx
. Untuk informasi selengkapnya tentang kontrol ini, lihat ComboBoxEx
Kontrol di Windows SDK.
Contoh
// The string to match.
LPCTSTR lpszmyString = _T("item");
// Delete all items that begin with the specified string.
int nItem = 0;
while ((nItem = m_pComboBox->FindString(nItem, lpszmyString)) != CB_ERR)
{
m_pComboBox->DeleteString(nItem);
}
CComboBox::FindStringExact
FindStringExact
Panggil fungsi anggota untuk menemukan string kotak daftar pertama (dalam kotak kombo) yang cocok dengan string yang ditentukan dalam lpszFind
.
int FindStringExact(
int nIndexStart,
LPCTSTR lpszFind) const;
Parameter
nIndexStart
Menentukan indeks berbasis nol item sebelum item pertama yang akan dicari. Saat pencarian mencapai bagian bawah kotak daftar, pencarian berlanjut dari bagian atas kotak daftar kembali ke item yang ditentukan oleh nIndexStart
. Jika nIndexStart
-1, seluruh kotak daftar dicari dari awal.
lpszFind
Arahkan ke string yang dihentikan null untuk dicari. String ini dapat berisi nama file lengkap, termasuk ekstensi. Pencarian tidak peka huruf besar/kecil, sehingga string ini dapat berisi kombinasi huruf besar dan huruf kecil.
Tampilkan Nilai
Indeks berbasis nol dari item yang cocok, atau CB_ERR
jika pencarian tidak berhasil.
Keterangan
Jika kotak kombo dibuat dengan gaya gambar pemilik tetapi tanpa CBS_HASSTRINGS
gaya, FindStringExact
upaya untuk mencocokkan nilai kata ganda terhadap nilai lpszFind.
Contoh
// The string to match.
LPCTSTR lpszmyExactString = _T("item 5");
// Delete all items that exactly match the specified string.
int nDex = 0;
while ((nDex = m_pComboBox->FindStringExact(nDex, lpszmyExactString)) != CB_ERR)
{
m_pComboBox->DeleteString(nDex);
}
CComboBox::GetComboBoxInfo
Mengambil informasi untuk CComboBox
objek.
BOOL GetComboBoxInfo(PCOMBOBOXINFO pcbi) const;
Parameter
*pcbi*<br/> A pointer to the [
STRUKTUR COMBOBOXINFO'](/windows/win32/api/winuser/ns-winuser-comboboxinfo).
Tampilkan Nilai
Mengembalikan TRUE
keberhasilan, FALSE
jika gagal.
Keterangan
Fungsi anggota ini menimulasi fungsionalitas CB_GETCOMBOBOXINFO
pesan, seperti yang dijelaskan dalam Windows SDK.
CComboBox::GetCount
Panggil fungsi anggota ini untuk mengambil jumlah item dalam bagian kotak daftar dari kotak kombo.
int GetCount() const;
Tampilkan Nilai
Jumlah item. Jumlah yang dikembalikan adalah satu lebih besar dari nilai indeks item terakhir (indeks berbasis nol). Hal ini CB_ERR
jika terjadi kesalahan.
Contoh
// Add 10 items to the combo box.
CString strItem;
for (int i = 0; i < 10; i++)
{
strItem.Format(_T("item %d"), i);
m_pComboBox->AddString(strItem);
}
// Verify the 10 items were added to the combo box.
ASSERT(m_pComboBox->GetCount() == 10);
CComboBox::GetCueBanner
Mendapatkan teks isian yang ditampilkan untuk kontrol kotak kombo.
CString GetCueBanner() const;
BOOL GetCueBanner(
LPTSTR lpszText,
int cchText) const;
Parameter
lpszText
[out] Penunjuk ke buffer yang menerima teks banner isian.
cchText
[di] Ukuran buffer tempat lpszText
parameter menunjuk.
Tampilkan Nilai
Pada kelebihan beban pertama, CString
objek yang berisi teks banner isian jika ada; jika tidak, CString
objek yang memiliki panjang nol.
-atau-
Pada kelebihan beban kedua, TRUE
jika metode ini berhasil; jika tidak, FALSE
.
Keterangan
Teks isian adalah perintah yang ditampilkan di area input kontrol kotak kombo. Isis teks ditampilkan hingga pengguna menyediakan input.
Metode ini mengirim CB_GETCUEBANNER
pesan, yang dijelaskan dalam Windows SDK.
CComboBox::GetCurSel
Panggil fungsi anggota ini untuk menentukan item mana dalam kotak kombo yang dipilih.
int GetCurSel() const;
Tampilkan Nilai
Indeks berbasis nol dari item yang saat ini dipilih dalam kotak daftar kotak kombo, atau CB_ERR
jika tidak ada item yang dipilih.
Keterangan
GetCurSel
mengembalikan indeks ke dalam daftar.
Contoh
// Select the next item of the currently selected item
// in the combo box.
int nIndex = m_pComboBox->GetCurSel();
int nCount = m_pComboBox->GetCount();
if ((nIndex != CB_ERR) && (nCount > 1))
{
if (++nIndex < nCount)
m_pComboBox->SetCurSel(nIndex);
else
m_pComboBox->SetCurSel(0);
}
CComboBox::GetDroppedControlRect
GetDroppedControlRect
Panggil fungsi anggota untuk mengambil koordinat layar kotak daftar yang terlihat (turun bawah) dari kotak kombo drop-down.
void GetDroppedControlRect(LPRECT lprect) const;
Parameter
lprect
Arahkan ke struktur RECT yaitu menerima koordinat.
Contoh
// This example move a combo box so that the upper left
// corner of the combo box is at a specific point.
// The point to move the combo box to.
CPoint myPoint(30, 10);
CRect r;
m_pComboBox->GetDroppedControlRect(&r);
m_pComboBox->GetParent()->ScreenToClient(&r);
r.OffsetRect(myPoint - r.TopLeft());
m_pComboBox->MoveWindow(&r);
CComboBox::GetDroppedState
GetDroppedState
Panggil fungsi anggota untuk menentukan apakah kotak daftar kotak kombo drop-down terlihat (dijatuhkan ke bawah).
BOOL GetDroppedState() const;
Tampilkan Nilai
Bukan nol jika kotak daftar terlihat; jika tidak, 0.
Contoh
// Show the dropdown list box if it is not already dropped.
if (!m_pComboBox->GetDroppedState())
m_pComboBox->ShowDropDown(TRUE);
CComboBox::GetDroppedWidth
Panggil fungsi ini untuk mengambil lebar minimum yang diizinkan, dalam piksel, dari kotak daftar kotak kombo.
int GetDroppedWidth() const;
Tampilkan Nilai
Jika berhasil, lebar minimum yang diizinkan, dalam piksel; jika tidak, CB_ERR
.
Keterangan
Fungsi ini hanya berlaku untuk kotak kombo dengan CBS_DROPDOWN
gaya atau CBS_DROPDOWNLIST
.
Secara default, lebar minimum yang diperbolehkan dari kotak daftar drop-down adalah 0. Lebar minimum yang diizinkan dapat diatur dengan memanggil SetDroppedWidth
. Ketika bagian kotak daftar dari kotak kombo ditampilkan, lebarnya adalah yang lebih besar dari lebar minimum yang diperbolehkan atau lebar kotak kombo.
Contoh
Lihat contoh untuk SetDroppedWidth
.
CComboBox::GetEditSel
Mendapatkan posisi karakter awal dan akhir dari pilihan saat ini dalam kontrol edit kotak kombo.
DWORD GetEditSel() const;
Tampilkan Nilai
Nilai 32-bit yang berisi posisi awal dalam kata berurutan rendah dan posisi karakter pertama yang tidak dipilih setelah akhir pilihan dalam kata berurutan tinggi. Jika fungsi ini digunakan pada kotak kombo tanpa kontrol edit, CB_ERR
dikembalikan.
Contoh
DWORD dwSel;
// Set the selection to be all characters after the current selection.
if ((dwSel = m_MyComboBox.GetEditSel()) != CB_ERR)
{
m_MyComboBox.SetEditSel(HIWORD(dwSel), -1);
}
CComboBox::GetExtendedUI
GetExtendedUI
Panggil fungsi anggota untuk menentukan apakah kotak kombo memiliki antarmuka pengguna default atau antarmuka pengguna yang diperluas.
BOOL GetExtendedUI() const;
Tampilkan Nilai
Bukan nol jika kotak kombo memiliki antarmuka pengguna yang diperluas; jika tidak, 0.
Keterangan
Antarmuka pengguna yang diperluas dapat diidentifikasi dengan cara berikut:
Mengklik kontrol statis menampilkan kotak daftar hanya untuk kotak kombo dengan
CBS_DROPDOWNLIST
gaya.Menekan tombol PANAH BAWAH menampilkan kotak daftar (F4 dinonaktifkan).
Menggulir dalam kontrol statis dinonaktifkan saat daftar item tidak terlihat (tombol panah dinonaktifkan).
Contoh
// Use the extended UI if it is not already set.
if (!m_pComboBox->GetExtendedUI())
m_pComboBox->SetExtendedUI(TRUE);
CComboBox::GetHorizontalExtent
Mengambil dari kotak kombo lebar dalam piksel di mana bagian kotak daftar dari kotak kombo dapat digulir secara horizontal.
UINT GetHorizontalExtent() const;
Tampilkan Nilai
Lebar yang dapat digulir dari bagian kotak daftar kotak kombo, dalam piksel.
Keterangan
Ini hanya berlaku jika bagian kotak daftar kotak kombo memiliki bilah gulir horizontal.
Contoh
// Find the longest string in the combo box.
CString strText;
CSize sz;
UINT dxText = 0;
CDC *pDCCombo = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->GetLBText(i, strText);
sz = pDCCombo->GetTextExtent(strText);
if (sz.cx > (LONG)dxText)
dxText = sz.cx;
}
m_pComboBox->ReleaseDC(pDCCombo);
// Set the horizontal extent only if the current extent is not large enough.
if (m_pComboBox->GetHorizontalExtent() < dxText)
{
m_pComboBox->SetHorizontalExtent(dxText);
ASSERT(m_pComboBox->GetHorizontalExtent() == dxText);
}
CComboBox::GetItemData
Mengambil nilai 32-bit yang disediakan aplikasi yang terkait dengan item kotak kombo yang ditentukan.
DWORD_PTR GetItemData(int nIndex) const;
Parameter
nIndex
Berisi indeks berbasis nol item dalam kotak daftar kotak kombo.
Tampilkan Nilai
Nilai 32-bit yang terkait dengan item, atau CB_ERR
jika terjadi kesalahan.
Keterangan
Nilai 32-bit dapat diatur dengan dwItemData
parameter SetItemData
panggilan fungsi anggota. GetItemDataPtr
Gunakan fungsi anggota jika nilai 32-bit yang akan diambil adalah pointer (void
*).
Contoh
// If any item's data is equal to zero then reset it to -1.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
if (m_pComboBox->GetItemData(i) == 0)
{
m_pComboBox->SetItemData(i, (DWORD)-1);
}
}
CComboBox::GetItemDataPtr
Mengambil nilai 32-bit yang disediakan aplikasi yang terkait dengan item kotak kombo yang ditentukan sebagai penunjuk (void
*).
void* GetItemDataPtr(int nIndex) const;
Parameter
nIndex
Berisi indeks berbasis nol item dalam kotak daftar kotak kombo.
Tampilkan Nilai
Mengambil penunjuk, atau -1 jika terjadi kesalahan.
Contoh
LPVOID lpmyPtr = m_pComboBox->GetItemDataPtr(5);
// Check all the items in the combo box; if an item's
// data pointer is equal to my pointer then reset it to NULL.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
if (m_pComboBox->GetItemDataPtr(i) == lpmyPtr)
{
m_pComboBox->SetItemDataPtr(i, NULL);
}
}
CComboBox::GetItemHeight
GetItemHeight
Panggil fungsi anggota untuk mengambil tinggi item daftar dalam kotak kombo.
int GetItemHeight(int nIndex) const;
Parameter
nIndex
Menentukan komponen kotak kombo yang tingginya akan diambil. nIndex
Jika parameter -1, tinggi bagian edit kontrol (atau teks statis) dari kotak kombo diambil. Jika kotak kombo memiliki CBS_OWNERDRAWVARIABLE
gaya, nIndex
menentukan indeks berbasis nol dari item daftar yang tingginya akan diambil. Jika tidak, nIndex
harus diatur ke 0.
Tampilkan Nilai
Tinggi, dalam piksel, dari item yang ditentukan dalam kotak kombo. Nilai yang dikembalikan adalah CB_ERR
jika terjadi kesalahan.
Contoh
// Set the height of every item so the item
// is completely visible.
CString strLBText;
CSize size;
CDC *pDC = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->GetLBText(i, strLBText);
size = pDC->GetTextExtent(strLBText);
// Only want to set the item height if the current height
// is not big enough.
if (m_pComboBox->GetItemHeight(i) < size.cy)
m_pComboBox->SetItemHeight(i, size.cy);
}
m_pComboBox->ReleaseDC(pDC);
CComboBox::GetLBText
Mendapatkan string dari kotak daftar kotak kombo.
int GetLBText(
int nIndex,
LPTSTR lpszText) const;
void GetLBText(
int nIndex,
CString& rString) const;
Parameter
nIndex
Berisi indeks berbasis nol dari string kotak daftar yang akan disalin.
lpszText
Menunjuk ke buffer yang akan menerima string. Buffer harus memiliki ruang yang cukup untuk string dan karakter null yang dihentikan.
rString
Referensi ke CString
.
Tampilkan Nilai
Panjang (dalam byte) string, tidak termasuk karakter null yang mengakhiri. Jika nIndex
tidak menentukan indeks yang valid, nilai yang dikembalikan adalah CB_ERR
.
Keterangan
Bentuk kedua fungsi anggota ini mengisi CString
objek dengan teks item.
Jika nIndex
tidak valid, fungsi ini melempar E_INVALIDARG
pengecualian (kode kesalahan: -2147024809
, 0x80070057
).
Contoh
// Dump all of the items in the combo box.
CString str1, str2;
int n;
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
n = m_pComboBox->GetLBTextLen(i);
m_pComboBox->GetLBText(i, str1.GetBuffer(n));
str1.ReleaseBuffer();
str2.Format(_T("item %d: %s\r\n"), i, str1.GetBuffer(0));
AFXDUMP(str2);
}
CComboBox::GetLBTextLen
Mendapatkan panjang string dalam kotak daftar kotak kombo.
int GetLBTextLen(int nIndex) const;
Parameter
nIndex
Berisi indeks berbasis nol dari string kotak daftar.
Tampilkan Nilai
Panjang string dalam byte, tidak termasuk karakter null yang mengakhiri. Jika nIndex
tidak menentukan indeks yang valid, nilai yang dikembalikan adalah CB_ERR
.
Contoh
Lihat contoh untuk CComboBox::GetLBText
.
CComboBox::GetLocale
Mengambil lokal yang digunakan oleh kotak kombo.
LCID GetLocale() const;
Tampilkan Nilai
Nilai pengidentifikasi lokal (LCID) untuk string dalam kotak kombo.
Keterangan
Lokal digunakan, misalnya, untuk menentukan urutan pengurutan string dalam kotak kombo yang diurutkan.
Contoh
Lihat contoh untuk CComboBox::SetLocale
.
CComboBox::GetMinVisible
Mendapatkan jumlah minimum item yang terlihat dalam daftar drop-down kontrol kotak kombo saat ini.
int GetMinVisible() const;
Tampilkan Nilai
Jumlah minimum item yang terlihat dalam daftar drop-down saat ini.
Keterangan
Metode ini mengirim CB_GETMINVISIBLE
pesan, yang dijelaskan dalam Windows SDK.
CComboBox::GetTopIndex
Mengambil indeks berbasis nol dari item pertama yang terlihat dalam bagian kotak daftar kotak kombo.
int GetTopIndex() const;
Tampilkan Nilai
Indeks berbasis nol dari item pertama yang terlihat dalam bagian kotak daftar kotak kombo jika berhasil, CB_ERR
jika tidak.
Keterangan
Awalnya, item 0 berada di bagian atas kotak daftar, tetapi jika kotak daftar digulir, item lain mungkin berada di bagian atas.
Contoh
// Want an item in the bottom half to be the first visible item.
int nTop = m_pComboBox->GetCount() / 2;
if (m_pComboBox->GetTopIndex() < nTop)
{
m_pComboBox->SetTopIndex(nTop);
ASSERT(m_pComboBox->GetTopIndex() == nTop);
}
CComboBox::InitStorage
Mengalokasikan memori untuk menyimpan item kotak daftar dalam bagian kotak daftar dari kotak kombo.
int InitStorage(
int nItems,
UINT nBytes);
Parameter
nItems
Menentukan jumlah item yang akan ditambahkan.
nBytes
Menentukan jumlah memori, dalam byte, untuk mengalokasikan string item.
Tampilkan Nilai
Jika berhasil, jumlah maksimum item yang dapat disimpan oleh bagian kotak daftar kotak kombo sebelum realokasi memori diperlukan, jika tidak CB_ERRSPACE
, artinya memori tidak cukup tersedia.
Keterangan
Panggil fungsi ini sebelum menambahkan sejumlah besar item ke bagian kotak daftar dari CComboBox
.
Hanya Windows 95/98: Parameter wParam
dibatasi pada nilai 16-bit. Ini berarti kotak daftar tidak boleh berisi lebih dari 32.767 item. Meskipun jumlah item dibatasi, ukuran total item dalam kotak daftar hanya dibatasi oleh memori yang tersedia.
Fungsi ini membantu mempercepat inisialisasi kotak daftar yang memiliki sejumlah besar item (lebih dari 100). Ini melakukan pra-alokasi jumlah memori yang ditentukan sehingga fungsi berikutnya AddString
, , InsertString
dan Dir
membutuhkan waktu sesingkat mungkin. Anda dapat menggunakan perkiraan untuk parameter. Jika Anda berlebihan, beberapa memori tambahan dialokasikan; jika Anda meremehkan, alokasi normal digunakan untuk item yang melebihi jumlah yang telah dialokasikan sebelumnya.
Contoh
// Initialize the storage of the combo box to be 256 strings with
// about 10 characters per string, performance improvement.
int nAlloc = pmyComboBox->InitStorage(256, 10);
ASSERT(nAlloc != CB_ERRSPACE);
// Add 256 items to the combo box.
CString strAdd;
for (int i = 0; i < 256; i++)
{
strAdd.Format(_T("item string %d"), i);
m_pComboBox->AddString(strAdd);
}
CComboBox::InsertString
Menyisipkan string ke dalam kotak daftar kotak kombo.
int InsertString(
int nIndex,
LPCTSTR lpszString);
Parameter
nIndex
Berisi indeks berbasis nol ke posisi dalam kotak daftar yang akan menerima string. Jika parameter ini adalah -1, string ditambahkan ke akhir daftar.
lpszString
Menunjuk ke string null-terminated yang akan disisipkan.
Tampilkan Nilai
Indeks berbasis nol dari posisi tempat string disisipkan. Nilai yang dikembalikan adalah CB_ERR
jika terjadi kesalahan. Nilai yang dikembalikan adalah CB_ERRSPACE
jika ruang yang tidak mencukup tersedia untuk menyimpan string baru.
Keterangan
AddString
Tidak seperti fungsi anggota, InsertString
fungsi anggota tidak menyebabkan daftar dengan CBS_SORT
gaya diurutkan.
Catatan
Fungsi ini tidak didukung oleh kontrol Windows ComboBoxEx
. Untuk informasi selengkapnya tentang kontrol ini, lihat ComboBoxEx
Kontrol di Windows SDK.
Contoh
// Insert items in between existing items.
CString strIns;
int nItems = m_pComboBox->GetCount();
for (int i = 0; i < nItems; i++)
{
strIns.Format(_T("item string %c"), (char)('A' + i));
m_pComboBox->InsertString(2 * i, strIns);
}
CComboBox::LimitText
Membatasi panjang byte teks yang dapat dimasukkan pengguna ke dalam kontrol edit kotak kombo.
BOOL LimitText(int nMaxChars);
Parameter
nMaxChars
Menentukan panjang (dalam byte) teks yang dapat dimasukkan pengguna. Jika parameter ini adalah 0, panjang teks diatur ke 65.535 byte.
Tampilkan Nilai
Bukan nol jika berhasil. Jika dipanggil untuk kotak kombo dengan gaya CBS_DROPDOWNLIST
atau untuk kotak kombo tanpa kontrol edit, nilai yang dikembalikan adalah CB_ERR
.
Keterangan
Jika kotak kombo tidak memiliki gaya CBS_AUTOHSCROLL
, mengatur batas teks menjadi lebih besar dari ukuran kontrol edit tidak akan berpengaruh.
LimitText
hanya membatasi teks yang dapat dimasukkan pengguna. Ini tidak berpengaruh pada teks apa pun yang sudah ada di kontrol edit saat pesan dikirim, juga tidak memengaruhi panjang teks yang disalin ke kontrol edit saat string dalam kotak daftar dipilih.
Contoh
// Limit the number of characters in the combo box's edit control to
// be the maximum number visible.
// Get the text metrics for the combo box; needed for the
// average character width.
TEXTMETRIC tm;
CDC *pDCCB = m_pComboBox->GetDC();
pDCCB->GetTextMetrics(&tm);
m_pComboBox->ReleaseDC(pDCCB);
CRect rect;
m_pComboBox->GetClientRect(&rect);
m_pComboBox->LimitText(rect.Width() / tm.tmAveCharWidth);
CComboBox::MeasureItem
Dipanggil oleh kerangka kerja saat kotak kombo dengan gaya gambar pemilik dibuat.
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
Parameter
lpMeasureItemStruct
Pointer panjang ke MEASUREITEMSTRUCT
struktur.
Keterangan
Secara default, fungsi anggota ini tidak melakukan apa pun. Ambil alih fungsi anggota ini dan isi MEASUREITEMSTRUCT
struktur untuk memberi tahu Windows tentang dimensi kotak daftar dalam kotak kombo. Jika kotak kombo dibuat dengan CBS_OWNERDRAWVARIABLE
gaya, kerangka kerja memanggil fungsi anggota ini untuk setiap item dalam kotak daftar. Jika tidak, anggota ini hanya dipanggil sekali.
CBS_OWNERDRAWFIXED
Menggunakan gaya dalam kotak kombo gambar pemilik yang dibuat dengan SubclassDlgItem
fungsi CWnd
anggota melibatkan pertimbangan pemrograman lebih lanjut. Lihat diskusi di Catatan Teknis 14.
Lihat CWnd::OnMeasureItem
untuk deskripsi MEASUREITEMSTRUCT
struktur.
Contoh
// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example measures an item and sets the height of the item to twice the
// vertical extent of its text. The combo box control was created with
// the following code:
// pmyComboBox->Create(
// WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
// CBS_SORT|CBS_OWNERDRAWVARIABLE,
// myRect, pParentWnd, 1);
//
void CMyComboBox::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
ASSERT(lpMeasureItemStruct->CtlType == ODT_COMBOBOX);
if (lpMeasureItemStruct->itemID != (UINT)-1)
{
LPCTSTR lpszText = (LPCTSTR)lpMeasureItemStruct->itemData;
ASSERT(lpszText != NULL);
CSize sz;
CDC *pDC = GetDC();
sz = pDC->GetTextExtent(lpszText);
ReleaseDC(pDC);
lpMeasureItemStruct->itemHeight = 2 * sz.cy;
}
}
CComboBox::Paste
Menyisipkan data dari Clipboard ke kontrol edit kotak kombo pada posisi kursor saat ini.
void Paste();
Keterangan
Data disisipkan hanya jika Clipboard berisi data dalam CF_TEXT
format.
Contoh
// Replace all of the text in the combo box's edit control with the text
// in the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Paste();
CComboBox::ResetContent
Menghapus semua item dari kotak daftar dan mengedit kontrol kotak kombo.
void ResetContent();
Contoh
// Delete all the items from the combo box.
m_pComboBox->ResetContent();
ASSERT(m_pComboBox->GetCount() == 0);
CComboBox::SelectString
Mencari string dalam kotak daftar kotak kombo, dan jika string ditemukan, memilih string dalam kotak daftar dan menyalinnya ke kontrol edit.
int SelectString(
int nStartAfter,
LPCTSTR lpszString);
Parameter
nStartAfter
Berisi indeks berbasis nol item sebelum item pertama yang akan dicari. Saat pencarian mencapai bagian bawah kotak daftar, pencarian berlanjut dari bagian atas kotak daftar kembali ke item yang ditentukan oleh nStartAfter
. Jika -1, seluruh kotak daftar dicari dari awal.
lpszString
Menunjuk ke string null-terminated yang berisi awalan yang akan dicari. Pencarian bersifat independen huruf besar/kecil, sehingga string ini dapat berisi kombinasi huruf besar dan huruf kecil.
Tampilkan Nilai
Indeks berbasis nol dari item yang dipilih jika string ditemukan. Jika pencarian tidak berhasil, nilai yang dikembalikan adalah CB_ERR
dan pilihan saat ini tidak diubah.
Keterangan
String dipilih hanya jika karakter awalnya (dari titik awal) cocok dengan karakter dalam string awalan.
Perhatikan bahwa SelectString
fungsi anggota dan FindString
keduanya menemukan string, tetapi SelectString
fungsi anggota juga memilih string.
Contoh
// The string to match.
LPCTSTR lpszSelect = _T("item");
// Select the item that begins with the specified string.
int nSel = m_pComboBox->SelectString(0, lpszSelect);
ASSERT(nSel != CB_ERR);
CComboBox::SetCueBanner
Mengatur teks isian yang ditampilkan untuk kontrol kotak kombo.
BOOL SetCueBanner(LPCTSTR lpszText);
Parameter
lpszText
[di] Penunjuk ke buffer null-terminated yang berisi teks iseng.
Tampilkan Nilai
TRUE
jika metode berhasil; jika tidak, FALSE
.
Keterangan
Teks isian adalah perintah yang ditampilkan di area input kontrol kotak kombo. Isis teks ditampilkan hingga pengguna menyediakan input.
Metode ini mengirim CB_SETCUEBANNER
pesan, yang dijelaskan dalam Windows SDK.
Contoh
Contoh kode pertama mendefinisikan variabel, m_combobox
, yang digunakan untuk mengakses kontrol kotak kombo secara terprogram. Variabel ini digunakan dalam contoh berikutnya.
// Variable to access the combo box control
CComboBox m_combobox;
Contoh kode berikutnya mengatur banner isian untuk kontrol kotak kombo.
// Add extra initialization here.
// Add 20 items to the combo box. The Resource Editor
// has already been used to set the style of the combo
// box to CBS_SORT.
CString str;
for (int i = 1; i <= 20; i++)
{
str.Format(_T("Item %2d"), i);
m_combobox.AddString(str);
}
// Set the minimum visible item
m_combobox.SetMinVisibleItems(10);
// Set the cue banner
m_combobox.SetCueBanner(_T("Select an item..."));
// End of extra initialization.
CComboBox::SetCurSel
Memilih string dalam kotak daftar kotak kombo.
int SetCurSel(int nSelect);
Parameter
nSelect
Menentukan indeks berbasis nol dari string yang akan dipilih. Jika -1, pilihan saat ini dalam kotak daftar dihapus dan kontrol edit dikosongkan.
Tampilkan Nilai
Indeks berbasis nol dari item yang dipilih jika pesan berhasil. Nilai yang dikembalikan adalah CB_ERR
jika nSelect
lebih besar dari jumlah item dalam daftar atau jika nSelect
diatur ke -1, yang menghapus pilihan.
Keterangan
Jika perlu, kotak daftar menggulir string ke dalam tampilan (jika kotak daftar terlihat). Teks dalam kontrol edit kotak kombo diubah untuk mencerminkan pilihan baru. Pilihan sebelumnya dalam kotak daftar dihapus.
Contoh
// Select the last item in the combo box.
int nLast = pmyComboBox->GetCount() - 1;
if (nLast >= 0)
m_pComboBox->SetCurSel(nLast);
CComboBox::SetDroppedWidth
Panggil fungsi ini untuk mengatur lebar minimum yang diizinkan, dalam piksel, dari kotak daftar kotak kombo.
int SetDroppedWidth(UINT nWidth);
Parameter
nWidth
Lebar minimum kotak daftar yang diizinkan dari kotak kombo, dalam piksel.
Tampilkan Nilai
Jika berhasil, lebar baru kotak daftar, jika tidak CB_ERR
.
Keterangan
Fungsi ini hanya berlaku untuk kotak kombo dengan CBS_DROPDOWN
gaya atau CBS_DROPDOWNLIST
.
Secara default, lebar minimum yang diperbolehkan dari kotak daftar drop-down adalah 0. Ketika bagian kotak daftar dari kotak kombo ditampilkan, lebarnya adalah yang lebih besar dari lebar minimum yang diperbolehkan atau lebar kotak kombo.
Contoh
// Find the longest string in the combo box.
CString str;
CSize sz;
int dx = 0;
TEXTMETRIC tm;
CDC *pDC = m_pComboBox->GetDC();
CFont *pFont = m_pComboBox->GetFont();
// Select the listbox font, save the old font
CFont *pOldFont = pDC->SelectObject(pFont);
// Get the text metrics for avg char width
pDC->GetTextMetrics(&tm);
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->GetLBText(i, str);
sz = pDC->GetTextExtent(str);
// Add the avg width to prevent clipping
sz.cx += tm.tmAveCharWidth;
if (sz.cx > dx)
dx = sz.cx;
}
// Select the old font back into the DC
pDC->SelectObject(pOldFont);
m_pComboBox->ReleaseDC(pDC);
// Adjust the width for the vertical scroll bar and the left and right border.
dx += ::GetSystemMetrics(SM_CXVSCROLL) + 2 * ::GetSystemMetrics(SM_CXEDGE);
// Set the width of the list box so that every item is completely visible.
m_pComboBox->SetDroppedWidth(dx);
CComboBox::SetEditSel
Memilih karakter dalam kontrol edit kotak kombo.
BOOL SetEditSel(
int nStartChar,
int nEndChar);
Parameter
nStartChar
Menentukan posisi awal. Jika posisi awal diatur ke -1, maka pilihan yang ada akan dihapus.
nEndChar
Menentukan posisi akhir. Jika posisi akhir diatur ke -1, maka semua teks dari posisi awal ke karakter terakhir dalam kontrol edit dipilih.
Tampilkan Nilai
Bukan nol jika fungsi anggota berhasil; jika tidak, 0. CB_ERR
Ini adalah jika CComboBox
memiliki CBS_DROPDOWNLIST
gaya atau tidak memiliki kotak daftar.
Keterangan
Posisinya berbasis nol. Untuk memilih karakter pertama kontrol edit, Anda menentukan posisi awal 0. Posisi akhir adalah untuk karakter tepat setelah karakter terakhir untuk dipilih. Misalnya, untuk memilih empat karakter pertama kontrol edit, Anda akan menggunakan posisi awal 0 dan posisi akhir 4.
Catatan
Fungsi ini tidak didukung oleh kontrol Windows ComboBoxEx
. Untuk informasi selengkapnya tentang kontrol ini, lihat ComboBoxEx
Kontrol di Windows SDK.
Contoh
Lihat contoh untuk CComboBox::GetEditSel
.
CComboBox::SetExtendedUI
SetExtendedUI
Panggil fungsi anggota untuk memilih antarmuka pengguna default atau antarmuka pengguna yang diperluas untuk kotak kombo yang memiliki CBS_DROPDOWN
gaya atau CBS_DROPDOWNLIST
.
int SetExtendedUI(BOOL bExtended = TRUE);
Parameter
bExtended
Menentukan apakah kotak kombo harus menggunakan antarmuka pengguna yang diperluas atau antarmuka pengguna default. Nilai TRUE
memilih antarmuka pengguna yang diperluas; nilai FALSE
memilih antarmuka pengguna standar.
Tampilkan Nilai
CB_OKAY
jika operasi berhasil, atau CB_ERR
jika terjadi kesalahan.
Keterangan
Antarmuka pengguna yang diperluas dapat diidentifikasi dengan cara berikut:
Mengklik kontrol statis menampilkan kotak daftar hanya untuk kotak kombo dengan
CBS_DROPDOWNLIST
gaya.Menekan tombol PANAH BAWAH menampilkan kotak daftar (F4 dinonaktifkan).
Menggulir dalam kontrol statis dinonaktifkan saat daftar item tidak terlihat (tombol panah dinonaktifkan).
Contoh
Lihat contoh untuk CComboBox::GetExtendedUI
.
CComboBox::SetHorizontalExtent
Mengatur lebar, dalam piksel, di mana bagian kotak daftar kotak kombo dapat digulir secara horizontal.
void SetHorizontalExtent(UINT nExtent);
Parameter
nExtent
Menentukan jumlah piksel di mana bagian kotak daftar kotak kombo dapat digulir secara horizontal.
Keterangan
Jika lebar kotak daftar lebih kecil dari nilai ini, bilah gulir horizontal akan menggulir item secara horizontal dalam kotak daftar. Jika lebar kotak daftar sama dengan atau lebih besar dari nilai ini, bilah gulir horizontal disembunyikan atau, jika kotak kombo memiliki CBS_DISABLENOSCROLL
gaya, dinonaktifkan.
Contoh
// Find the longest string in the combo box.
CString str;
CSize sz;
int dx = 0;
TEXTMETRIC tm;
CDC *pDC = m_pComboBox->GetDC();
CFont *pFont = m_pComboBox->GetFont();
// Select the listbox font, save the old font
CFont *pOldFont = pDC->SelectObject(pFont);
// Get the text metrics for avg char width
pDC->GetTextMetrics(&tm);
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->GetLBText(i, str);
sz = pDC->GetTextExtent(str);
// Add the avg width to prevent clipping
sz.cx += tm.tmAveCharWidth;
if (sz.cx > dx)
dx = sz.cx;
}
// Select the old font back into the DC
pDC->SelectObject(pOldFont);
m_pComboBox->ReleaseDC(pDC);
// Set the horizontal extent so every character of all strings can
// be scrolled to.
m_pComboBox->SetHorizontalExtent(dx);
CComboBox::SetItemData
Mengatur nilai 32-bit yang terkait dengan item yang ditentukan dalam kotak kombo.
int SetItemData(
int nIndex,
DWORD_PTR dwItemData);
Parameter
nIndex
Berisi indeks berbasis nol ke item yang akan diatur.
dwItemData
Berisi nilai baru yang akan diasosiasikan dengan item.
Tampilkan Nilai
CB_ERR
jika terjadi kesalahan.
Keterangan
SetItemDataPtr
Gunakan fungsi anggota jika item 32-bit akan menjadi penunjuk.
Contoh
// Set the data of each item to be equal to its index.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->SetItemData(i, i);
}
CComboBox::SetItemDataPtr
Mengatur nilai 32-bit yang terkait dengan item yang ditentukan dalam kotak kombo menjadi penunjuk yang ditentukan (void
*).
int SetItemDataPtr(
int nIndex,
void* pData);
Parameter
nIndex
Berisi indeks berbasis nol ke item.
pData
Berisi penunjuk untuk dikaitkan dengan item.
Tampilkan Nilai
CB_ERR
jika terjadi kesalahan.
Keterangan
Penunjuk ini tetap valid untuk masa pakai kotak kombo, meskipun posisi relatif item dalam kotak kombo mungkin berubah saat item ditambahkan atau dihapus. Oleh karena itu, indeks item dalam kotak dapat berubah, tetapi penunjuk tetap dapat diandalkan.
Contoh
// Set the data pointer of each item to be NULL.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->SetItemDataPtr(i, NULL);
}
CComboBox::SetItemHeight
SetItemHeight
Panggil fungsi anggota untuk mengatur tinggi item daftar dalam kotak kombo atau tinggi bagian kontrol edit (atau teks statis) dari kotak kombo.
int SetItemHeight(
int nIndex,
UINT cyItemHeight);
Parameter
nIndex
Menentukan apakah tinggi item daftar atau tinggi bagian edit kontrol (atau teks statis) dari kotak kombo diatur.
Jika kotak kombo memiliki CBS_OWNERDRAWVARIABLE
gaya, nIndex
menentukan indeks berbasis nol dari item daftar yang tingginya akan diatur; jika tidak, nIndex
harus 0 dan tinggi semua item daftar akan diatur.
Jika nIndex
-1, tinggi bagian edit kontrol atau teks statis dari kotak kombo akan diatur.
cyItemHeight
Menentukan tinggi, dalam piksel, dari komponen kotak kombo yang diidentifikasi oleh nIndex
.
Tampilkan Nilai
CB_ERR
jika indeks atau tinggi tidak valid; jika tidak, 0.
Keterangan
Tinggi bagian edit kontrol (atau teks statis) dari kotak kombo diatur secara independen dari tinggi item daftar. Aplikasi harus memastikan bahwa tinggi bagian edit-kontrol (atau teks statis) tidak lebih kecil dari tinggi item kotak daftar tertentu.
Contoh
// Set the height of every item to be the
// vertical size of the item's text extent.
CString str;
CSize sz;
CDC *pDC = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
m_pComboBox->GetLBText(i, str);
sz = pDC->GetTextExtent(str);
m_pComboBox->SetItemHeight(i, sz.cy);
}
m_pComboBox->ReleaseDC(pDC);
CComboBox::SetLocale
Mengatur pengidentifikasi lokal untuk kotak kombo ini.
LCID SetLocale(LCID nNewLocale);
Parameter
nNewLocale
Nilai pengidentifikasi lokal baru (LCID) yang akan diatur untuk kotak kombo.
Tampilkan Nilai
Nilai pengidentifikasi lokal sebelumnya (LCID) untuk kotak kombo ini.
Keterangan
Jika SetLocale
tidak dipanggil, lokal default diperoleh dari sistem. Lokal default sistem ini dapat dimodifikasi dengan menggunakan aplikasi Regional (atau Internasional) Panel Kontrol.
Contoh
// My LCID to use.
LCID mylcid = MAKELCID(MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MEXICAN),
SORT_DEFAULT);
// Force the list box to use my locale.
m_pComboBox->SetLocale(mylcid);
ASSERT(m_pComboBox->GetLocale() == mylcid);
CComboBox::SetMinVisibleItems
Mengatur jumlah minimum item yang terlihat dalam daftar drop-down kontrol kotak kombo saat ini.
BOOL SetMinVisibleItems(int iMinVisible);
Parameter
iMinVisible
[di] Menentukan jumlah minimum item yang terlihat.
Tampilkan Nilai
TRUE
jika metode ini berhasil; jika tidak, FALSE
.
Keterangan
Metode ini mengirim CB_SETMINVISIBLE
pesan, yang dijelaskan dalam Windows SDK.
Contoh
Contoh kode pertama mendefinisikan variabel, m_combobox
, yang digunakan untuk mengakses kontrol kotak kombo secara terprogram. Variabel ini digunakan dalam contoh berikutnya.
// Variable to access the combo box control
CComboBox m_combobox;
Contoh kode berikutnya menyisipkan 20 item ke dalam daftar drop-down kontrol kotak kombo. Kemudian menentukan bahwa minimal 10 item ditampilkan saat pengguna menekan panah drop-down.
// Add extra initialization here.
// Add 20 items to the combo box. The Resource Editor
// has already been used to set the style of the combo
// box to CBS_SORT.
CString str;
for (int i = 1; i <= 20; i++)
{
str.Format(_T("Item %2d"), i);
m_combobox.AddString(str);
}
// Set the minimum visible item
m_combobox.SetMinVisibleItems(10);
// Set the cue banner
m_combobox.SetCueBanner(_T("Select an item..."));
// End of extra initialization.
CComboBox::SetTopIndex
Memastikan bahwa item tertentu terlihat di bagian kotak daftar kotak kombo.
int SetTopIndex(int nIndex);
Parameter
nIndex
Menentukan indeks berbasis nol dari item kotak daftar.
Tampilkan Nilai
Nol jika berhasil, atau CB_ERR
jika terjadi kesalahan.
Keterangan
Sistem menggulir kotak daftar hingga item yang ditentukan oleh nIndex
muncul di bagian atas kotak daftar atau rentang gulir maksimum telah tercapai.
Contoh
// Set the first visible item in the combo box to be the middle item
m_pComboBox->SetTopIndex(m_pComboBox->GetCount() / 2);
CComboBox::ShowDropDown
Memperlihatkan atau menyembunyikan kotak daftar kotak kombo yang memiliki CBS_DROPDOWN
gaya atau CBS_DROPDOWNLIST
.
void ShowDropDown(BOOL bShowIt = TRUE);
Parameter
bShowIt
Menentukan apakah kotak daftar drop-down akan ditampilkan atau disembunyikan. Nilai memperlihatkan TRUE
kotak daftar. Nilai FALSE
menyembunyikan kotak daftar.
Keterangan
Secara default, kotak kombo gaya ini akan menampilkan kotak daftar.
Fungsi anggota ini tidak berpengaruh pada kotak kombo yang dibuat dengan CBS_SIMPLE
gaya.
Contoh
Lihat contoh untuk CComboBox::GetDroppedState
.
Lihat juga
Sampel MFC CTRLBARS
CWnd
Kelas
Bagan Hierarki
CWnd
Kelas
CButton
Kelas
CEdit
Kelas
CListBox
Kelas
CScrollBar
Kelas
CStatic
Kelas
CDialog
Kelas