Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menyediakan fungsionalitas kotak kombo Windows.
Syntax
class CComboBox : public CWnd
Members
Public Constructors
| Name | Description |
|---|---|
CComboBox::CComboBox |
Membuat CComboBox objek. |
Public Methods
| Name | Description |
|---|---|
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 . |
Remarks
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.
| Style | Saat kotak daftar terlihat | Kontrol statis atau edit |
|---|---|---|
| Simple | Always | Edit |
| Drop-down | Ketika turun ke bawah | Edit |
| Drop-down list | Ketika turun ke bawah | Static |
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_SIMPLEgaya.ON_CBN_DBLCLKPengguna mengeklik dua kali string dalam kotak daftar kotak kombo. Pesan pemberitahuan ini hanya dikirim untuk kotak kombo denganCBS_SIMPLEgaya. Untuk kotak kombo denganCBS_DROPDOWNgaya atauCBS_DROPDOWNLIST, klik ganda tidak dapat terjadi karena satu klik menyembunyikan kotak daftar.ON_CBN_DROPDOWNKotak daftar kotak kombo akan menurun (dibuat terlihat). Pesan pemberitahuan ini hanya dapat terjadi untuk kotak kombo denganCBS_DROPDOWNgaya atauCBS_DROPDOWNLIST.ON_CBN_EDITCHANGEPengguna telah mengambil tindakan yang mungkin telah mengubah teks dalam bagian kontrol edit kotak kombo.CBN_EDITUPDATETidak seperti pesan, pesan ini dikirim setelah Windows memperbarui layar. Ini tidak dikirim jika kotak kombo memilikiCBS_DROPDOWNLISTgaya.ON_CBN_EDITUPDATEBagian 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_DROPDOWNLISTgaya.ON_CBN_ERRSPACEKotak 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_CLOSEUPpesan pemberitahuan untuk menunjukkan bahwa pilihan pengguna harus diabaikan. PesanCBN_SELENDCANCELpemberitahuan atauCBN_SELENDOKdikirim meskipunCBN_CLOSEUPpesan pemberitahuan tidak dikirim (seperti dalam kasus kotak kombo denganCBS_SIMPLEgaya).ON_CBN_SELENDOKPengguna memilih item lalu menekan tombol ENTER atau mengklik tombol PANAH BAWAH untuk menyembunyikan kotak daftar kotak kombo. Pesan pemberitahuan ini dikirim sebelumCBN_CLOSEUPpesan untuk menunjukkan bahwa pilihan pengguna harus dianggap valid. PesanCBN_SELENDCANCELpemberitahuan atauCBN_SELENDOKdikirim meskipunCBN_CLOSEUPpesan pemberitahuan tidak dikirim (seperti dalam kasus kotak kombo denganCBS_SIMPLEgaya).ON_CBN_KILLFOCUSKotak kombo kehilangan fokus input.ON_CBN_SELCHANGEPilihan 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 melaluiGetLBTextatau fungsi serupa lainnya.GetWindowTexttidak dapat digunakan.ON_CBN_SETFOCUSKotak 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 .
Inheritance Hierarchy
CComboBox
Requirements
Header:afxwin.h
CComboBox::AddString
Menambahkan string ke kotak daftar kotak kombo.
int AddString(LPCTSTR lpszString);
Parameters
lpszString
Menunjuk ke string null-terminated yang akan ditambahkan.
Return Value
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.
Remarks
Jika kotak daftar tidak dibuat dengan CBS_SORT gaya, string ditambahkan ke akhir daftar. Jika tidak, string disisipkan ke dalam daftar, dan daftar diurutkan.
Note
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.
Example
// 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();
Example
// 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();
Remarks
Untuk menghapus pilihan saat ini dan menempatkan konten yang dihapus ke Clipboard, gunakan Cut fungsi anggota.
Example
// 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);
Parameters
lpCompareItemStruct
Pointer panjang ke COMPAREITEMSTRUCT struktur.
Return Value
Menunjukkan posisi relatif dari dua item yang dijelaskan dalam COMPAREITEMSTRUCT struktur. Ini bisa menjadi salah satu nilai berikut:
| Value | Meaning |
|---|---|
| - 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
Remarks
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.
Example
// 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();
Example
// 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);
Parameters
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.
Return Value
Bukan nol jika berhasil; jika tidak, 0.
Remarks
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_NCCREATEpesan , , WM_CREATEWM_NCCALCSIZE, dan WM_GETMINMAXINFO ke kotak kombo.
Pesan ini ditangani secara default oleh OnNcCreatefungsi anggota , , OnCreateOnNcCalcSize, 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_CHILDSelaluWS_VISIBLEBiasanyaWS_DISABLEDJarangWS_VSCROLLUntuk menambahkan pengguliran vertikal untuk kotak daftar dalam kotak komboWS_HSCROLLUntuk menambahkan pengguliran horizontal untuk kotak daftar dalam kotak komboWS_GROUPUntuk mengelompokkan kontrolWS_TABSTOPUntuk menyertakan kotak kombo dalam urutan tab
Example
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();
Remarks
Untuk menghapus pilihan saat ini tanpa menempatkan teks yang dihapus ke Clipboard, panggil Clear fungsi anggota.
Example
// 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);
Parameters
lpDeleteItemStruct
Penunjuk panjang ke struktur Windows DELETEITEMSTRUCT yang berisi informasi tentang item yang dihapus. Lihat CWnd::OnDeleteItem untuk deskripsi struktur ini.
Remarks
Implementasi default fungsi ini tidak melakukan apa pun. Ambil alih fungsi ini untuk menggambar ulang kotak kombo sesuai kebutuhan.
Example
// 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);
Parameters
nIndex
Menentukan indeks ke string yang akan dihapus.
Return Value
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.
Remarks
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.
Example
// 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);
Parameters
attr
Bisa berupa kombinasi nilai apa pun yang enum dijelaskan dalam CFile::GetStatus atau kombinasi apa pun dari nilai berikut:
DDL_READWRITEFile dapat dibaca dari atau ditulis ke.DDL_READONLYFile dapat dibaca dari tetapi tidak ditulis ke.DDL_HIDDENFile disembunyikan dan tidak muncul dalam daftar direktori.DDL_SYSTEMFile adalah file sistem.DDL_DIRECTORYNama yang ditentukan olehlpszWildCardmenentukan direktori.DDL_ARCHIVEFile telah diarsipkan.DDL_DRIVESSertakan semua drive yang cocok dengan nama yang ditentukan olehlpszWildCard.DDL_EXCLUSIVEBendera 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, *.*).
Return Value
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.
Remarks
Fungsi ini tidak didukung oleh kontrol Windows ComboBoxEx . Untuk informasi selengkapnya tentang kontrol ini, lihat ComboBoxEx Kontrol di Windows SDK.
Example
// 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);
Parameters
lpDrawItemStruct
Penunjuk ke DRAWITEMSTRUCT struktur yang berisi informasi tentang jenis gambar yang diperlukan.
Remarks
Anggota itemActionDRAWITEMSTRUCT 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.
Example
// 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;
Parameters
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.
Return Value
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.
Remarks
Fungsi ini tidak didukung oleh kontrol Windows ComboBoxEx . Untuk informasi selengkapnya tentang kontrol ini, lihat ComboBoxEx Kontrol di Windows SDK.
Example
// 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;
Parameters
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.
Return Value
Indeks berbasis nol dari item yang cocok, atau CB_ERR jika pencarian tidak berhasil.
Remarks
Jika kotak kombo dibuat dengan gaya gambar pemilik tetapi tanpa CBS_HASSTRINGS gaya, FindStringExact upaya untuk mencocokkan nilai kata ganda terhadap nilai lpszFind.
Example
// 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;
Parameters
pcbi
Penunjuk ke COMBOBOXINFO struktur.
Return Value
Mengembalikan TRUE keberhasilan, FALSE jika gagal.
Remarks
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;
Return Value
Jumlah item. Jumlah yang dikembalikan adalah satu lebih besar dari nilai indeks item terakhir (indeks berbasis nol). Hal ini CB_ERR jika terjadi kesalahan.
Example
// 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;
Parameters
lpszText
[out] Penunjuk ke buffer yang menerima teks banner isian.
cchText
[di] Ukuran buffer tempat lpszText parameter menunjuk.
Return Value
Pada kelebihan beban pertama, CString objek yang berisi teks banner isian jika ada; jika tidak, CString objek yang memiliki panjang nol.
-or-
Pada kelebihan beban kedua, TRUE jika metode ini berhasil; jika tidak, FALSE.
Remarks
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;
Return Value
Indeks berbasis nol dari item yang saat ini dipilih dalam kotak daftar kotak kombo, atau CB_ERR jika tidak ada item yang dipilih.
Remarks
GetCurSel mengembalikan indeks ke dalam daftar.
Example
// 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;
Parameters
lprect
Arahkan ke struktur RECT yaitu menerima koordinat.
Example
// 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;
Return Value
Bukan nol jika kotak daftar terlihat; jika tidak, 0.
Example
// 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;
Return Value
Jika berhasil, lebar minimum yang diizinkan, dalam piksel; jika tidak, CB_ERR.
Remarks
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.
Example
Lihat contoh untuk SetDroppedWidth.
CComboBox::GetEditSel
Mendapatkan posisi karakter awal dan akhir dari pilihan saat ini dalam kontrol edit kotak kombo.
DWORD GetEditSel() const;
Return Value
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.
Example
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;
Return Value
Bukan nol jika kotak kombo memiliki antarmuka pengguna yang diperluas; jika tidak, 0.
Remarks
Antarmuka pengguna yang diperluas dapat diidentifikasi dengan cara berikut:
Mengklik kontrol statis menampilkan kotak daftar hanya untuk kotak kombo dengan
CBS_DROPDOWNLISTgaya.Menekan tombol PANAH BAWAH menampilkan kotak daftar (F4 dinonaktifkan).
Menggulir dalam kontrol statis dinonaktifkan saat daftar item tidak terlihat (tombol panah dinonaktifkan).
Example
// 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;
Return Value
Lebar yang dapat digulir dari bagian kotak daftar kotak kombo, dalam piksel.
Remarks
Ini hanya berlaku jika bagian kotak daftar kotak kombo memiliki bilah gulir horizontal.
Example
// 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;
Parameters
nIndex
Berisi indeks berbasis nol item dalam kotak daftar kotak kombo.
Return Value
Nilai 32-bit yang terkait dengan item, atau CB_ERR jika terjadi kesalahan.
Remarks
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*).
Example
// 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;
Parameters
nIndex
Berisi indeks berbasis nol item dalam kotak daftar kotak kombo.
Return Value
Mengambil penunjuk, atau -1 jika terjadi kesalahan.
Example
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;
Parameters
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.
Return Value
Tinggi, dalam piksel, dari item yang ditentukan dalam kotak kombo. Nilai yang dikembalikan adalah CB_ERR jika terjadi kesalahan.
Example
// 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;
Parameters
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.
Return Value
Panjang (dalam byte) string, tidak termasuk karakter null yang mengakhiri. Jika nIndex tidak menentukan indeks yang valid, nilai yang dikembalikan adalah CB_ERR.
Remarks
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).
Example
// 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;
Parameters
nIndex
Berisi indeks berbasis nol dari string kotak daftar.
Return Value
Panjang string dalam byte, tidak termasuk karakter null yang mengakhiri. Jika nIndex tidak menentukan indeks yang valid, nilai yang dikembalikan adalah CB_ERR.
Example
Lihat contoh untuk CComboBox::GetLBText.
CComboBox::GetLocale
Mengambil lokal yang digunakan oleh kotak kombo.
LCID GetLocale() const;
Return Value
Nilai pengidentifikasi lokal (LCID) untuk string dalam kotak kombo.
Remarks
Lokal digunakan, misalnya, untuk menentukan urutan pengurutan string dalam kotak kombo yang diurutkan.
Example
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;
Return Value
Jumlah minimum item yang terlihat dalam daftar drop-down saat ini.
Remarks
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;
Return Value
Indeks berbasis nol dari item pertama yang terlihat dalam bagian kotak daftar kotak kombo jika berhasil, CB_ERR jika tidak.
Remarks
Awalnya, item 0 berada di bagian atas kotak daftar, tetapi jika kotak daftar digulir, item lain mungkin berada di bagian atas.
Example
// 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);
Parameters
nItems
Menentukan jumlah item yang akan ditambahkan.
nBytes
Menentukan jumlah memori, dalam byte, untuk mengalokasikan string item.
Return Value
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.
Remarks
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, , InsertStringdan 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.
Example
// 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);
Parameters
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.
Return Value
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.
Remarks
AddString Tidak seperti fungsi anggota, InsertString fungsi anggota tidak menyebabkan daftar dengan CBS_SORT gaya diurutkan.
Note
Fungsi ini tidak didukung oleh kontrol Windows ComboBoxEx . Untuk informasi selengkapnya tentang kontrol ini, lihat ComboBoxEx Kontrol di Windows SDK.
Example
// 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);
Parameters
nMaxChars
Menentukan panjang (dalam byte) teks yang dapat dimasukkan pengguna. Jika parameter ini adalah 0, panjang teks diatur ke 65.535 byte.
Return Value
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.
Remarks
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.
Example
// 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);
Parameters
lpMeasureItemStruct
Pointer panjang ke MEASUREITEMSTRUCT struktur.
Remarks
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.
Example
// 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();
Remarks
Data disisipkan hanya jika Clipboard berisi data dalam CF_TEXT format.
Example
// 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();
Example
// 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);
Parameters
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.
Return Value
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.
Remarks
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.
Example
// 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);
Parameters
lpszText
[di] Penunjuk ke buffer null-terminated yang berisi teks iseng.
Return Value
TRUE jika metode berhasil; jika tidak, FALSE.
Remarks
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.
Example
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);
Parameters
nSelect
Menentukan indeks berbasis nol dari string yang akan dipilih. Jika -1, pilihan saat ini dalam kotak daftar dihapus dan kontrol edit dikosongkan.
Return Value
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.
Remarks
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.
Example
// 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);
Parameters
nWidth
Lebar minimum kotak daftar yang diizinkan dari kotak kombo, dalam piksel.
Return Value
Jika berhasil, lebar baru kotak daftar, jika tidak CB_ERR.
Remarks
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.
Example
// 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);
Parameters
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.
Return Value
Bukan nol jika fungsi anggota berhasil; jika tidak, 0.
CB_ERR Ini adalah jika CComboBox memiliki CBS_DROPDOWNLIST gaya atau tidak memiliki kotak daftar.
Remarks
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.
Note
Fungsi ini tidak didukung oleh kontrol Windows ComboBoxEx . Untuk informasi selengkapnya tentang kontrol ini, lihat ComboBoxEx Kontrol di Windows SDK.
Example
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);
Parameters
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.
Return Value
CB_OKAY jika operasi berhasil, atau CB_ERR jika terjadi kesalahan.
Remarks
Antarmuka pengguna yang diperluas dapat diidentifikasi dengan cara berikut:
Mengklik kontrol statis menampilkan kotak daftar hanya untuk kotak kombo dengan
CBS_DROPDOWNLISTgaya.Menekan tombol PANAH BAWAH menampilkan kotak daftar (F4 dinonaktifkan).
Menggulir dalam kontrol statis dinonaktifkan saat daftar item tidak terlihat (tombol panah dinonaktifkan).
Example
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);
Parameters
nExtent
Menentukan jumlah piksel di mana bagian kotak daftar kotak kombo dapat digulir secara horizontal.
Remarks
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.
Example
// 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);
Parameters
nIndex
Berisi indeks berbasis nol ke item yang akan diatur.
dwItemData
Berisi nilai baru yang akan diasosiasikan dengan item.
Return Value
CB_ERR jika terjadi kesalahan.
Remarks
SetItemDataPtr Gunakan fungsi anggota jika item 32-bit akan menjadi penunjuk.
Example
// 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);
Parameters
nIndex
Berisi indeks berbasis nol ke item.
pData
Berisi penunjuk untuk dikaitkan dengan item.
Return Value
CB_ERR jika terjadi kesalahan.
Remarks
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.
Example
// 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);
Parameters
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.
Return Value
CB_ERR jika indeks atau tinggi tidak valid; jika tidak, 0.
Remarks
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.
Example
// 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);
Parameters
nNewLocale
Nilai pengidentifikasi lokal baru (LCID) yang akan diatur untuk kotak kombo.
Return Value
Nilai pengidentifikasi lokal sebelumnya (LCID) untuk kotak kombo ini.
Remarks
Jika SetLocale tidak dipanggil, lokal default diperoleh dari sistem. Lokal default sistem ini dapat dimodifikasi dengan menggunakan aplikasi Regional (atau Internasional) Panel Kontrol.
Example
// 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);
Parameters
iMinVisible
[di] Menentukan jumlah minimum item yang terlihat.
Return Value
TRUE jika metode ini berhasil; jika tidak, FALSE.
Remarks
Metode ini mengirim CB_SETMINVISIBLE pesan, yang dijelaskan dalam Windows SDK.
Example
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);
Parameters
nIndex
Menentukan indeks berbasis nol dari item kotak daftar.
Return Value
Nol jika berhasil, atau CB_ERR jika terjadi kesalahan.
Remarks
Sistem menggulir kotak daftar hingga item yang ditentukan oleh nIndex muncul di bagian atas kotak daftar atau rentang gulir maksimum telah tercapai.
Example
// 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);
Parameters
bShowIt
Menentukan apakah kotak daftar drop-down akan ditampilkan atau disembunyikan. Nilai memperlihatkan TRUE kotak daftar. Nilai FALSE menyembunyikan kotak daftar.
Remarks
Secara default, kotak kombo gaya ini akan menampilkan kotak daftar.
Fungsi anggota ini tidak berpengaruh pada kotak kombo yang dibuat dengan CBS_SIMPLE gaya.
Example
Lihat contoh untuk CComboBox::GetDroppedState.
See also
Sampel MFC CTRLBARS
CWnd Kelas
Hierarchy Chart
CWnd Kelas
CButton Kelas
CEdit Kelas
CListBox Kelas
CScrollBar Kelas
CStatic Kelas
CDialog Kelas