Bagikan melalui


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 memiliki CBS_SIMPLE gaya.

  • ON_CBN_DBLCLK Pengguna mengeklik dua kali string dalam kotak daftar kotak kombo. Pesan pemberitahuan ini hanya dikirim untuk kotak kombo dengan CBS_SIMPLE gaya. Untuk kotak kombo dengan CBS_DROPDOWN gaya atau CBS_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 dengan CBS_DROPDOWN gaya atau CBS_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 memiliki CBS_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 memiliki CBS_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 sebelum CBN_CLOSEUP pesan pemberitahuan untuk menunjukkan bahwa pilihan pengguna harus diabaikan. Pesan CBN_SELENDCANCEL pemberitahuan atau CBN_SELENDOK dikirim meskipun CBN_CLOSEUP pesan pemberitahuan tidak dikirim (seperti dalam kasus kotak kombo dengan CBS_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 sebelum CBN_CLOSEUP pesan untuk menunjukkan bahwa pilihan pengguna harus dianggap valid. Pesan CBN_SELENDCANCEL pemberitahuan atau CBN_SELENDOK dikirim meskipun CBN_CLOSEUP pesan pemberitahuan tidak dikirim (seperti dalam kasus kotak kombo dengan CBS_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 melalui GetLBText 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

CObject

CCmdTarget

CWnd

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_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_CHILD Selalu

  • WS_VISIBLE Biasanya

  • WS_DISABLED Jarang

  • WS_VSCROLL Untuk menambahkan pengguliran vertikal untuk kotak daftar dalam kotak kombo

  • WS_HSCROLL Untuk menambahkan pengguliran horizontal untuk kotak daftar dalam kotak kombo

  • WS_GROUP Untuk mengelompokkan kontrol

  • WS_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 oleh lpszWildCard menentukan direktori.

  • DDL_ARCHIVE File telah diarsipkan.

  • DDL_DRIVES Sertakan semua drive yang cocok dengan nama yang ditentukan oleh lpszWildCard.

  • 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, , 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.

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