Bagikan melalui


CListBox Kelas

Menyediakan fungsionalitas kotak daftar Windows.

Sintaks

class CListBox : public CWnd

Anggota

Konstruktor Publik

Nama Deskripsi
CListBox::CListBox Membuat CListBox objek.

Metode Publik

Nama Deskripsi
CListBox::AddString Menambahkan string ke kotak daftar.
CListBox::CharToItem Ambil alih untuk menyediakan penanganan kustom WM_CHAR untuk kotak daftar gambar pemilik yang tidak memiliki string.
CListBox::CompareItem Dipanggil oleh kerangka kerja untuk menentukan posisi item baru dalam kotak daftar gambar pemilik yang diurutkan.
CListBox::Create Membuat kotak daftar Windows dan melampirkannya ke CListBox objek.
CListBox::DeleteItem Dipanggil oleh kerangka kerja saat pengguna menghapus item dari kotak daftar gambar pemilik.
CListBox::DeleteString Menghapus string dari kotak daftar.
CListBox::Dir Menambahkan nama file, drive, atau keduanya dari direktori saat ini ke kotak daftar.
CListBox::DrawItem Dipanggil oleh kerangka kerja saat aspek visual kotak daftar gambar pemilik berubah.
CListBox::FindString Mencari string dalam kotak daftar.
CListBox::FindStringExact Menemukan string kotak daftar pertama yang cocok dengan string tertentu.
CListBox::GetAnchorIndex Mengambil indeks berbasis nol dari item jangkar saat ini dalam kotak daftar.
CListBox::GetCaretIndex Menentukan indeks item yang memiliki persegi panjang fokus dalam kotak daftar beberapa pilihan.
CListBox::GetCount Mengembalikan jumlah string dalam kotak daftar.
CListBox::GetCurSel Mengembalikan indeks berbasis nol dari string yang saat ini dipilih dalam kotak daftar.
CListBox::GetHorizontalExtent Mengembalikan lebar dalam piksel yang dapat digulir oleh kotak daftar secara horizontal.
CListBox::GetItemData Mengembalikan nilai yang terkait dengan item kotak daftar.
CListBox::GetItemDataPtr Mengembalikan penunjuk ke item kotak daftar.
CListBox::GetItemHeight Menentukan tinggi item dalam kotak daftar.
CListBox::GetItemRect Mengembalikan persegi panjang pembatas item kotak daftar seperti yang saat ini ditampilkan.
CListBox::GetListBoxInfo Mengambil jumlah item per kolom.
CListBox::GetLocale Mengambil pengidentifikasi lokal untuk kotak daftar.
CListBox::GetSel Mengembalikan status pilihan item kotak daftar.
CListBox::GetSelCount Mengembalikan jumlah string yang saat ini dipilih dalam kotak daftar beberapa pilihan.
CListBox::GetSelItems Mengembalikan indeks string yang saat ini dipilih dalam kotak daftar.
CListBox::GetText Menyalin item kotak daftar ke dalam buffer.
CListBox::GetTextLen Mengembalikan panjang dalam byte item kotak daftar.
CListBox::GetTopIndex Mengembalikan indeks string pertama yang terlihat dalam kotak daftar.
CListBox::InitStorage Melakukan pra-alokasi blok memori untuk item dan string kotak daftar.
CListBox::InsertString Menyisipkan string di lokasi tertentu dalam kotak daftar.
CListBox::ItemFromPoint Mengembalikan indeks item kotak daftar yang terdekat dengan titik.
CListBox::MeasureItem Dipanggil oleh kerangka kerja saat kotak daftar gambar pemilik dibuat untuk menentukan dimensi kotak daftar.
CListBox::ResetContent Menghapus semua entri dari kotak daftar.
CListBox::SelectString Mencari dan memilih string dalam kotak daftar pilihan tunggal.
CListBox::SelItemRange Memilih atau membatalkan pilihan rentang string dalam kotak daftar beberapa pilihan.
CListBox::SetAnchorIndex Mengatur jangkar dalam kotak daftar beberapa pilihan untuk memulai pilihan yang diperluas.
CListBox::SetCaretIndex Mengatur persegi panjang fokus ke item pada indeks yang ditentukan dalam kotak daftar beberapa pilihan.
CListBox::SetColumnWidth Mengatur lebar kolom kotak daftar multikolom.
CListBox::SetCurSel Memilih string kotak daftar.
CListBox::SetHorizontalExtent Mengatur lebar dalam piksel tempat kotak daftar dapat digulir secara horizontal.
CListBox::SetItemData Mengatur nilai yang terkait dengan item kotak daftar.
CListBox::SetItemDataPtr Mengatur penunjuk ke item kotak daftar.
CListBox::SetItemHeight Mengatur tinggi item dalam kotak daftar.
CListBox::SetLocale Mengatur pengidentifikasi lokal untuk kotak daftar.
CListBox::SetSel Memilih atau membatalkan pilihan item kotak daftar dalam kotak daftar beberapa pilihan.
CListBox::SetTabStops Mengatur posisi perhentian tab dalam kotak daftar.
CListBox::SetTopIndex Mengatur indeks berbasis nol dari string pertama yang terlihat dalam kotak daftar.
CListBox::VKeyToItem Ambil alih untuk menyediakan penanganan kustom WM_KEYDOWN untuk kotak daftar dengan LBS_WANTKEYBOARDINPUT kumpulan gaya.

Keterangan

Kotak daftar menampilkan daftar item, seperti nama file, yang dapat dilihat dan dipilih pengguna.

Dalam kotak daftar pilihan tunggal, pengguna hanya dapat memilih satu item. Dalam kotak daftar beberapa pilihan, rentang item dapat dipilih. Saat pengguna memilih item, item disorot dan kotak daftar mengirim pesan pemberitahuan ke jendela induk.

Anda dapat membuat kotak daftar baik dari templat dialog atau langsung di kode Anda. Untuk membuatnya secara langsung, buat CListBox objek, lalu panggil Create fungsi anggota untuk membuat kontrol kotak daftar Windows dan melampirkannya ke CListBox objek. Untuk menggunakan kotak daftar dalam templat dialog, deklarasikan variabel kotak daftar di kelas kotak dialog Anda, lalu gunakan DDX_Control fungsi kelas DoDataExchange kotak dialog Anda untuk menyambungkan variabel anggota ke kontrol. (ini dilakukan untuk Anda secara otomatis saat Anda menambahkan variabel kontrol ke kelas kotak dialog Anda.)

Konstruksi dapat menjadi proses satu langkah di kelas yang berasal dari CListBox. Tulis konstruktor untuk kelas turunan dan panggil Create dari dalam konstruktor.

Jika Anda ingin menangani pesan pemberitahuan Windows yang dikirim oleh kotak daftar 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 anak dari kontrol kotak daftar 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( );

Berikut ini adalah daftar entri peta pesan potensial dan deskripsi kasus di mana mereka akan dikirim ke induk:

  • ON_LBN_DBLCLK Pengguna mengeklik dua kali string dalam kotak daftar. Hanya kotak daftar yang memiliki gaya yang LBS_NOTIFY akan mengirim pesan pemberitahuan ini.

  • ON_LBN_ERRSPACE Kotak daftar tidak dapat mengalokasikan cukup memori untuk memenuhi permintaan.

  • ON_LBN_KILLFOCUS Kotak daftar kehilangan fokus input.

  • ON_LBN_SELCANCEL Pilihan kotak daftar saat ini dibatalkan. Pesan ini hanya dikirim ketika kotak daftar memiliki LBS_NOTIFY gaya.

  • ON_LBN_SELCHANGE Pilihan dalam kotak daftar telah berubah. Pemberitahuan ini tidak dikirim jika pilihan diubah oleh CListBox::SetCurSel fungsi anggota. Pemberitahuan ini hanya berlaku untuk kotak daftar yang memiliki LBS_NOTIFY gaya. Pesan LBN_SELCHANGE pemberitahuan dikirim untuk kotak daftar beberapa pilihan setiap kali pengguna menekan tombol panah, meskipun pilihan tidak berubah.

  • ON_LBN_SETFOCUS Kotak daftar menerima fokus input.

  • ON_WM_CHARTOITEM Kotak daftar gambar pemilik yang tidak memiliki string menerima WM_CHAR pesan.

  • ON_WM_VKEYTOITEM Kotak daftar dengan LBS_WANTKEYBOARDINPUT gaya menerima pesan WM_KEYDOWN .

Jika Anda membuat CListBox objek dalam kotak dialog (melalui sumber daya dialog), CListBox objek secara otomatis dihancurkan saat pengguna menutup kotak dialog.

Jika Anda membuat CListBox objek dalam jendela, Anda mungkin perlu menghancurkan CListBox objek. Jika Anda membuat CListBox objek pada tumpukan, objek akan dihancurkan secara otomatis. Jika Anda membuat CListBox objek pada tumpukan dengan menggunakan new fungsi , Anda harus memanggil delete objek untuk menghancurkannya saat pengguna menutup jendela induk.

Jika Anda mengalokasikan memori apa pun dalam CListBox objek, ambil alih CListBox destruktor untuk membuang alokasi.

Hierarki Warisan

CObject

CCmdTarget

CWnd

CListBox

Persyaratan

Header: afxwin.h

CListBox::AddString

Menambahkan string ke kotak daftar.

int AddString(LPCTSTR lpszItem);

Parameter

lpszItem
Menunjuk ke string null-terminated yang akan ditambahkan.

Tampilkan Nilai

Indeks berbasis nol ke string dalam kotak daftar. Nilai yang dikembalikan adalah LB_ERR jika terjadi kesalahan; nilai yang dikembalikan adalah LB_ERRSPACE jika ruang yang tidak mencukup tersedia untuk menyimpan string baru.

Keterangan

Jika kotak daftar tidak dibuat dengan LBS_SORT gaya, string ditambahkan ke akhir daftar. Jika tidak, string disisipkan ke dalam daftar, dan daftar diurutkan. Jika kotak daftar dibuat dengan LBS_SORT gaya tetapi bukan LBS_HASSTRINGS gaya, kerangka kerja mengurutkan daftar menurut satu atau beberapa panggilan ke CompareItem fungsi anggota.

Gunakan InsertString untuk menyisipkan string ke lokasi tertentu dalam kotak daftar.

Contoh

// Add 10 items to the list box.
CString str;
for (int i = 0; i < 10; i++)
{
   str.Format(_T("item string %d"), i);
   m_myListBox.AddString(str);
}

CListBox::CharToItem

Dipanggil oleh kerangka kerja saat jendela induk kotak daftar menerima pesan WM_CHARTOITEM dari kotak daftar.

virtual int CharToItem(
    UINT nKey,
    UINT nIndex);

Parameter

nKey
Kode ANSI dari karakter yang di ketik pengguna.

nIndex
Posisi kart kotak daftar saat ini.

Tampilkan Nilai

Mengembalikan - 1 atau - 2 tanpa tindakan lebih lanjut atau angka nonnegatif untuk menentukan indeks item kotak daftar untuk melakukan tindakan default untuk penekanan tombol. Implementasi default mengembalikan - 1.

Keterangan

Pesan WM_CHARTOITEM dikirim oleh kotak daftar saat menerima WM_CHAR pesan, tetapi hanya jika kotak daftar memenuhi semua kriteria ini:

  • Adalah kotak daftar gambar pemilik.

  • Tidak memiliki set LBS_HASSTRINGS gaya.

  • Memiliki setidaknya satu item.

Anda tidak boleh menyebut fungsi ini sendiri. Ambil alih fungsi ini untuk menyediakan penanganan pesan keyboard kustom Anda sendiri.

Dalam penimpaan, Anda harus mengembalikan nilai untuk memberi tahu kerangka kerja tindakan apa yang Anda lakukan. Nilai pengembalian - 1 atau - 2 menunjukkan bahwa Anda menangani semua aspek memilih item dan tidak memerlukan tindakan lebih lanjut oleh kotak daftar. Sebelum kembali - 1 atau - 2, Anda dapat mengatur pilihan atau memindahkan tanda sisipan atau keduanya. Untuk mengatur pilihan, gunakan SetCurSel atau SetSel. Untuk memindahkan tanda sisipan, gunakan SetCaretIndex.

Nilai pengembalian 0 atau lebih besar menentukan indeks item dalam kotak daftar dan menunjukkan bahwa kotak daftar harus melakukan tindakan default untuk penekanan tombol pada item yang diberikan.

Contoh

// CMyODListBox is my owner-drawn list box derived from CListBox. This
// example moves the caret down one item on a numeric key and up one item
// on an alphabetic key. The list box control was created with the
// following code:
//   m_myODListBox.Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
//      CRect(10,250,200,450), pParentWnd, IDC_MYODLISTBOX);
//
int CMyODListBox::CharToItem(UINT nChar, UINT nIndex)
{
   // On a numeric key, move the caret up one item.
   if (isdigit(nChar) && (nIndex > 0))
   {
      SetCaretIndex(nIndex - 1);
   }
   // On an alphabetic key, move the caret down one item.
   else if (isalpha(nChar) && (nIndex < (UINT)GetCount()))
   {
      SetCaretIndex(nIndex + 1);
   }

   // Do not perform any default processing.
   return -1;
}

CListBox::CListBox

Membuat CListBox objek.

CListBox();

Keterangan

Anda membuat CListBox objek dalam dua langkah. Pertama, panggil konstruktor ClistBox lalu panggil Create, yang menginisialisasi kotak daftar Windows dan melampirkannya ke CListBox.

Contoh

// Declare a local CListBox object.
CListBox myListBox;

// Declare a dynamic CListBox object.
CListBox *pmyListBox = new CListBox;

CListBox::CompareItem

Dipanggil oleh kerangka kerja untuk menentukan posisi relatif item baru dalam kotak daftar 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 mungkin 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 struktur.

Keterangan

Secara default, fungsi anggota ini tidak melakukan apa pun. Jika Anda membuat kotak daftar 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

// CMyODListBox is my owner-drawn list box derived from CListBox. This
// example compares two items using _tcscmp to sort items in reverse
// alphabetical order. The list box control was created with the
// following code:
//   m_myODListBox.Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
//      CRect(10,250,200,450), pParentWnd, IDC_MYODLISTBOX);
//
int CMyODListBox::CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct)
{
   ASSERT(lpCompareItemStruct->CtlType == ODT_LISTBOX);
   LPCTSTR lpszText1 = (LPCTSTR)lpCompareItemStruct->itemData1;
   ASSERT(lpszText1 != NULL);
   LPCTSTR lpszText2 = (LPCTSTR)lpCompareItemStruct->itemData2;
   ASSERT(lpszText2 != NULL);

   return _tcscmp(lpszText2, lpszText1);
}

CListBox::Create

Membuat kotak daftar Windows dan melampirkannya ke CListBox objek.

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parameter

dwStyle
Menentukan gaya kotak daftar. Terapkan kombinasi gaya kotak daftar apa pun ke kotak.

rect
Menentukan ukuran dan posisi kotak daftar. Dapat berupa CRect objek atau RECT struktur.

pParentWnd
Menentukan jendela induk kotak daftar (biasanya objek CDialog ). Ini tidak boleh NULL.

nID
Menentukan ID kontrol kotak daftar.

Tampilkan Nilai

Bukan nol jika berhasil; jika tidak, 0.

Keterangan

Anda membuat CListBox objek dalam dua langkah. Pertama, panggil konstruktor lalu panggil Create, yang menginisialisasi kotak daftar Windows dan melampirkannya ke CListBox objek.

Saat Create dijalankan, Windows mengirimkan WM_NCCREATEpesan , , WM_CREATEWM_NCCALCSIZE, dan WM_GETMINMAXINFO ke kontrol kotak daftar.

Pesan ini ditangani secara default oleh OnNcCreatefungsi anggota , , OnCreateOnNcCalcSize, dan OnGetMinMaxInfo di CWnd kelas dasar. Untuk memperluas penanganan pesan default, dapatkan kelas dari CListBox, 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 daftar.

  • WS_CHILD Selalu

  • WS_VISIBLE Biasanya

  • WS_DISABLED Jarang

  • WS_VSCROLL Untuk menambahkan bilah gulir vertikal

  • WS_HSCROLL Untuk menambahkan bilah gulir horizontal

  • WS_GROUP Untuk mengelompokkan kontrol

  • WS_TABSTOP Untuk memperbolehkan tab ke kontrol ini

Contoh

// pParentWnd is a pointer to the parent window.
m_myListBox.Create(WS_CHILD | WS_VISIBLE | LBS_STANDARD | WS_HSCROLL,
                   CRect(10, 10, 200, 200), pParentWnd, IDC_MYLISTBOX);

CListBox::DeleteItem

Dipanggil oleh kerangka kerja saat pengguna menghapus item dari objek gambar CListBox pemilik atau menghancurkan kotak daftar.

virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);

Parameter

lpDeleteItemStruct
Penunjuk panjang ke struktur Windows DELETEITEMSTRUCT yang berisi informasi tentang item yang dihapus.

Keterangan

Implementasi default fungsi ini tidak melakukan apa pun. Ambil alih fungsi ini untuk menggambar ulang kotak daftar gambar pemilik sesuai kebutuhan.

Lihat CWnd::OnDeleteItem untuk deskripsi DELETEITEMSTRUCT struktur.

Contoh

// CMyODListBox is my owner-drawn list box derived from CListBox. This
// example simply frees the item's text. The list box control was created
// with the following code:
//   m_myODListBox.Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
//      CRect(10,250,200,450), pParentWnd, IDC_MYODLISTBOX);
//
void CMyODListBox::DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct)
{
   ASSERT(lpDeleteItemStruct->CtlType == ODT_LISTBOX);
   LPVOID lpszText = (LPVOID)lpDeleteItemStruct->itemData;
   ASSERT(lpszText != NULL);

   free(lpszText);

   CListBox::DeleteItem(lpDeleteItemStruct);
}

CListBox::DeleteString

Menghapus item dalam posisi nIndex dari kotak daftar.

int DeleteString(UINT nIndex);

Parameter

nIndex
Menentukan indeks berbasis nol dari string yang akan dihapus.

Tampilkan Nilai

Jumlah string yang tersisa dalam daftar. Nilai pengembalian adalah LB_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 daftar 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 other item from the list box.
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   m_myListBox.DeleteString(i);
}

CListBox::Dir

Menambahkan daftar nama file, drive, atau keduanya ke kotak daftar.

int Dir(
    UINT attr,
    LPCTSTR lpszWildCard);

Parameter

attr
Dapat berupa kombinasi nilai apa pun yang enum dijelaskan dalam CFile::GetStatus, atau kombinasi apa pun dari nilai berikut:

Nilai Makna
0x0000 File dapat dibaca dari atau ditulis ke.
0x0001 File dapat dibaca dari tetapi tidak ditulis ke.
0x0002 File disembunyikan dan tidak muncul dalam daftar direktori.
0x0004 File adalah file sistem.
0x0010 Nama yang ditentukan oleh lpszWildCard menentukan direktori.
0x0020 File telah diarsipkan.
0x4000 Sertakan semua drive yang cocok dengan nama yang ditentukan oleh lpszWildCard.
0x8000 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

Indeks berbasis nol dari nama file terakhir yang ditambahkan ke daftar. Nilai yang dikembalikan adalah LB_ERR jika terjadi kesalahan; nilai yang dikembalikan adalah LB_ERRSPACE jika ruang yang tidak mencukup tersedia untuk menyimpan string baru.

Contoh

// Add all the files and directories in the windows directory.
TCHAR lpszWinPath[MAX_PATH], lpszOldPath[MAX_PATH];
::GetWindowsDirectory(lpszWinPath, MAX_PATH);

::GetCurrentDirectory(MAX_PATH, lpszOldPath);
::SetCurrentDirectory(lpszWinPath);

m_myListBox.ResetContent();
m_myListBox.Dir(DDL_READWRITE | DDL_DIRECTORY, _T("*.*"));

::SetCurrentDirectory(lpszOldPath);

CListBox::DrawItem

Dipanggil oleh kerangka kerja saat aspek visual kotak daftar gambar pemilik berubah.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Parameter

lpDrawItemStruct
Penunjuk panjang ke DRAWITEMSTRUCT struktur yang berisi informasi tentang jenis gambar yang diperlukan.

Keterangan

itemState Dan itemAction anggota DRAWITEMSTRUCT struktur menentukan tindakan menggambar yang akan dilakukan.

Secara default, fungsi anggota ini tidak melakukan apa pun. Ambil alih fungsi anggota ini untuk mengimplementasikan gambar untuk objek gambar CListBox pemilik. Aplikasi harus memulihkan semua objek antarmuka perangkat grafis (GDI) yang dipilih untuk konteks tampilan yang disediakan sebelum lpDrawItemStruct fungsi anggota ini berakhir.

Lihat CWnd::OnDrawItem untuk deskripsi DRAWITEMSTRUCT struktur.

Contoh

// CMyODListBox is my owner-drawn list box derived from CListBox. This
// example draws an item's text centered vertically and horizontally. The
// list box control was created with the following code:
//   m_myODListBox.Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
//      CRect(10,250,200,450), pParentWnd, IDC_MYODLISTBOX);
//
void CMyODListBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
   ASSERT(lpDrawItemStruct->CtlType == ODT_LISTBOX);
   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. Also, erase
   // 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);
   }

   // If this item has the focus, draw a red frame around the
   // item's rect.
   if ((lpDrawItemStruct->itemAction | ODA_FOCUS) &&
       (lpDrawItemStruct->itemState & ODS_FOCUS))
   {
      CBrush br(RGB(255, 0, 0));
      dc.FrameRect(&lpDrawItemStruct->rcItem, &br);
   }

   // 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();
}

CListBox::FindString

Menemukan string pertama dalam kotak daftar yang berisi awalan yang ditentukan tanpa mengubah pilihan kotak daftar.

int FindString(
    int nStartAfter,
    LPCTSTR lpszItem) 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 nStartAfter -1, seluruh kotak daftar dicari dari awal.

lpszItem
Menunjuk ke string null-terminated yang berisi awalan yang akan dicari. Pencarian bersifat independen huruf besar/kecil, sehingga string ini mungkin berisi kombinasi huruf besar dan huruf kecil.

Tampilkan Nilai

Indeks berbasis nol dari item yang cocok, atau LB_ERR jika pencarian tidak berhasil.

Keterangan

SelectString Gunakan fungsi anggota untuk menemukan dan memilih string.

Contoh

// The string to match.
LPCTSTR lpszmyString = _T("item");

// Delete all items that begin with the specified string.
int nIndex = 0;
while ((nIndex = m_myListBox.FindString(nIndex, lpszmyString)) != LB_ERR)
{
   m_myListBox.DeleteString(nIndex);
}

CListBox::FindStringExact

Menemukan string kotak daftar pertama 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 dapat berisi kombinasi huruf besar dan huruf kecil.

Tampilkan Nilai

Indeks item yang cocok, atau LB_ERR jika pencarian tidak berhasil.

Keterangan

Jika kotak daftar dibuat dengan gaya gambar pemilik tetapi tanpa LBS_HASSTRINGS gaya, FindStringExact fungsi anggota mencoba mencocokkan nilai kata ganda terhadap nilai lpszFind.

Contoh

// The string to match.
LPCTSTR lpszmyString = _T("item string 3");

// Delete all items that exactly match the specified string.
int nIndex = 0;
while ((nIndex = m_myListBox.FindStringExact(nIndex, lpszmyString)) != LB_ERR)
{
   m_myListBox.DeleteString(nIndex);
}

CListBox::GetAnchorIndex

Mengambil indeks berbasis nol dari item jangkar saat ini dalam kotak daftar.

int GetAnchorIndex() const;

Tampilkan Nilai

Indeks item jangkar saat ini, jika berhasil; jika tidak, LB_ERR.

Keterangan

Dalam kotak daftar beberapa pilihan, item jangkar adalah item pertama atau terakhir dalam blok item yang dipilih yang berdampingan.

Contoh

Lihat contoh untuk CListBox::SetAnchorIndex.

CListBox::GetCaretIndex

Menentukan indeks item yang memiliki persegi panjang fokus dalam kotak daftar beberapa pilihan.

int GetCaretIndex() const;

Tampilkan Nilai

Indeks berbasis nol item yang memiliki persegi panjang fokus dalam kotak daftar. Jika kotak daftar adalah kotak daftar pilihan tunggal, nilai yang dikembalikan adalah indeks item yang dipilih, jika ada.

Keterangan

Item mungkin atau mungkin tidak dipilih.

Contoh

Lihat contoh untuk CListBox::SetCaretIndex.

CListBox::GetCount

Mengambil jumlah item dalam kotak daftar.

int GetCount() const;

Tampilkan Nilai

Jumlah item dalam kotak daftar, atau LB_ERR jika terjadi kesalahan.

Keterangan

Jumlah yang dikembalikan adalah satu lebih besar dari nilai indeks item terakhir (indeks berbasis nol).

Contoh

// Add 10 items to the list box.
CString str;
for (int i = 0; i < 10; i++)
{
   str.Format(_T("item %d"), i);
   m_myListBox.AddString(str);
}

// Verify that 10 items were added to the list box.
ASSERT(m_myListBox.GetCount() == 10);

CListBox::GetCurSel

Mengambil indeks berbasis nol dari item yang saat ini dipilih, jika ada, dalam kotak daftar pilihan tunggal.

int GetCurSel() const;

Tampilkan Nilai

Indeks berbasis nol dari item yang saat ini dipilih jika merupakan kotak daftar pilihan tunggal. LB_ERR Ini jika tidak ada item yang saat ini dipilih.

Dalam kotak daftar beberapa pilihan, indeks item yang memiliki fokus.

Keterangan

Jangan panggil GetCurSel kotak daftar beberapa pilihan. Gunakan CListBox::GetSelItems sebagai gantinya.

Contoh

// Select the next item of the currently selected one.
int nIndex = m_myListBox.GetCurSel();
int nCount = m_myListBox.GetCount();
if ((nIndex != LB_ERR) && (nCount > 1))
{
   if (++nIndex < nCount)
      m_myListBox.SetCurSel(nIndex);
   else
      m_myListBox.SetCurSel(0);
}

CListBox::GetHorizontalExtent

Mengambil dari kotak daftar lebar dalam piksel yang dapat digulir secara horizontal.

int GetHorizontalExtent() const;

Tampilkan Nilai

Lebar kotak daftar yang dapat digulir, dalam piksel.

Keterangan

Ini hanya berlaku jika kotak daftar memiliki bilah gulir horizontal.

Contoh

// Find the longest string in the list box.
CString str;
CSize sz;
int dx = 0;
CDC *pDC = m_myListBox.GetDC();
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   m_myListBox.GetText(i, str);
   sz = pDC->GetTextExtent(str);

   if (sz.cx > dx)
      dx = sz.cx;
}
m_myListBox.ReleaseDC(pDC);

// Set the horizontal extent only if the current extent is not large enough.
if (m_myListBox.GetHorizontalExtent() < dx)
{
   m_myListBox.SetHorizontalExtent(dx);
   ASSERT(m_myListBox.GetHorizontalExtent() == dx);
}

CListBox::GetItemData

Mengambil nilai doubleword yang disediakan aplikasi yang terkait dengan item kotak daftar yang ditentukan.

DWORD_PTR GetItemData(int nIndex) const;

Parameter

nIndex
Menentukan indeks berbasis nol item dalam kotak daftar.

Tampilkan Nilai

Nilai yang terkait dengan item, atau LB_ERR jika terjadi kesalahan.

Keterangan

Nilai kata ganda adalah dwItemData parameter SetItemData panggilan.

Contoh

// If any item's data is equal to zero then reset it to -1.
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   if (m_myListBox.GetItemData(i) == 0)
   {
      m_myListBox.SetItemData(i, (DWORD)-1);
   }
}

CListBox::GetItemDataPtr

Mengambil nilai 32-bit yang disediakan aplikasi yang terkait dengan item kotak daftar yang ditentukan sebagai penunjuk (void *).

void* GetItemDataPtr(int nIndex) const;

Parameter

nIndex
Menentukan indeks berbasis nol item dalam kotak daftar.

Tampilkan Nilai

Mengambil penunjuk, atau -1 jika terjadi kesalahan.

Contoh

LPVOID lpmyPtr = pParentWnd;

// Check all the items in the list box; if an item's
// data pointer is equal to my pointer then reset it to NULL.
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   if (m_myListBox.GetItemDataPtr(i) == lpmyPtr)
   {
      m_myListBox.SetItemDataPtr(i, NULL);
   }
}

CListBox::GetItemHeight

Menentukan tinggi item dalam kotak daftar.

int GetItemHeight(int nIndex) const;

Parameter

nIndex
Menentukan indeks berbasis nol item dalam kotak daftar. Parameter ini hanya digunakan jika kotak daftar memiliki LBS_OWNERDRAWVARIABLE gaya; jika tidak, parameter harus diatur ke 0.

Tampilkan Nilai

Tinggi, dalam piksel, item dalam kotak daftar. Jika kotak daftar memiliki LBS_OWNERDRAWVARIABLE gaya, nilai yang dikembalikan adalah tinggi item yang ditentukan oleh nIndex. Jika terjadi kesalahan, nilai yang dikembalikan adalah LB_ERR.

Contoh

// Set the height of every item so the item
// is completely visible.
CString str;
CSize sz;
CDC *pDC = m_myListBox.GetDC();
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   m_myListBox.GetText(i, str);
   sz = pDC->GetTextExtent(str);

   // Only want to set the item height if the current height
   // is not big enough.
   if (m_myListBox.GetItemHeight(i) < sz.cy)
      m_myListBox.SetItemHeight(i, sz.cy);
}
m_myListBox.ReleaseDC(pDC);

CListBox::GetItemRect

Mengambil dimensi persegi panjang yang mengikat item kotak daftar seperti yang saat ini ditampilkan di jendela kotak daftar.

int GetItemRect(
    int nIndex,
    LPRECT lpRect) const;

Parameter

nIndex
Menentukan indeks item berbasis nol.

lpRect
Menentukan pointer panjang ke RECT struktur yang menerima koordinat klien kotak daftar item.

Tampilkan Nilai

LB_ERR jika terjadi kesalahan.

Contoh

// Dump all of the items bounds.
CString str;
RECT r;
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   m_myListBox.GetItemRect(i, &r);

   str.Format(_T("item %d: left = %d, top = %d, right = %d, ")
              _T("bottom = %d\r\n"),
              i,
              r.left,
              r.top,
              r.right,
              r.bottom);
   AFXDUMP(str);
}

CListBox::GetListBoxInfo

Mengambil jumlah item per kolom.

DWORD GetListBoxInfo() const;

Tampilkan Nilai

Jumlah item per kolom CListBox objek.

Keterangan

Fungsi anggota ini menimulasi fungsionalitas LB_GETLISTBOXINFO pesan, seperti yang dijelaskan dalam Windows SDK.

CListBox::GetLocale

Mengambil lokal yang digunakan oleh kotak daftar.

LCID GetLocale() const;

Tampilkan Nilai

Nilai pengidentifikasi lokal (LCID) untuk string dalam kotak daftar.

Keterangan

Lokal digunakan, misalnya, untuk menentukan susunan urutan string dalam kotak daftar yang diurutkan.

Contoh

Lihat contoh untuk CListBox::SetLocale.

CListBox::GetSel

Mengambil status pilihan item.

int GetSel(int nIndex) const;

Parameter

nIndex
Menentukan indeks item berbasis nol.

Tampilkan Nilai

Angka positif jika item yang ditentukan dipilih; jika tidak, itu adalah 0. Nilai yang dikembalikan adalah LB_ERR jika terjadi kesalahan.

Keterangan

Fungsi anggota ini berfungsi dengan kotak daftar pilihan tunggal dan ganda.

Untuk mengambil indeks item kotak daftar yang saat ini dipilih, gunakan CListBox::GetCurSel.

Contoh

// Dump all of the items select state.
CString str;
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   str.Format(_T("item %d: select state is %s\r\n"),
              i,
              m_myListBox.GetSel(i) > 0 ? _T("true") : _T("false"));
   AFXDUMP(str);
}

CListBox::GetSelCount

Mengambil jumlah total item yang dipilih dalam kotak daftar beberapa pilihan.

int GetSelCount() const;

Tampilkan Nilai

Jumlah item yang dipilih dalam kotak daftar. Jika kotak daftar adalah kotak daftar pilihan tunggal, nilai yang dikembalikan adalah LB_ERR.

Contoh

Lihat contoh untuk CListBox::GetSelItems.

CListBox::GetSelItems

Mengisi buffer dengan array bilangan bulat yang menentukan nomor item item yang dipilih dalam kotak daftar beberapa pilihan.

int GetSelItems(
    int nMaxItems,
    LPINT rgIndex) const;

Parameter

nMaxItems
Menentukan jumlah maksimum item terpilih yang nomor itemnya akan ditempatkan dalam buffer.

rgIndex
Menentukan penunjuk ke buffer yang cukup besar untuk jumlah bilangan bulat yang ditentukan oleh nMaxItems.

Tampilkan Nilai

Jumlah item aktual yang ditempatkan di buffer. Jika kotak daftar adalah kotak daftar pilihan tunggal, nilai yang dikembalikan adalah LB_ERR.

Contoh

// Get the indexes of all the selected items.
int nCount = m_myODListBox.GetSelCount();
CArray<int, int> aryListBoxSel;

aryListBoxSel.SetSize(nCount);
m_myODListBox.GetSelItems(nCount, aryListBoxSel.GetData());

// Dump the selection array.
AFXDUMP(aryListBoxSel);

CListBox::GetText

Mendapatkan string dari kotak daftar.

int GetText(
    int nIndex,
    LPTSTR lpszBuffer) const;

void GetText(
    int nIndex,
    CString& rString) const;

Parameter

nIndex
Menentukan indeks berbasis nol dari string yang akan diambil.

lpszBuffer
Menunjuk ke buffer yang menerima string. Buffer harus memiliki ruang yang cukup untuk string dan karakter null yang dihentikan. Ukuran string dapat ditentukan sebelumnya dengan memanggil GetTextLen fungsi anggota.

rString
Referensi ke CString objek.

Tampilkan Nilai

Panjang (dalam byte) string, tidak termasuk karakter null yang mengakhiri. Jika nIndex tidak menentukan indeks yang valid, nilai yang dikembalikan adalah LB_ERR.

Keterangan

Bentuk kedua fungsi anggota ini mengisi CString objek dengan teks string.

Contoh

// Dump all of the items in the list box.
CString str, str2;
int n;
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   n = m_myListBox.GetTextLen(i);
   m_myListBox.GetText(i, str.GetBuffer(n));
   str.ReleaseBuffer();

   str2.Format(_T("item %d: %s\r\n"), i, str.GetBuffer(0));
   AFXDUMP(str2);
}

CListBox::GetTextLen

Mendapatkan panjang string dalam item kotak daftar.

int GetTextLen(int nIndex) const;

Parameter

nIndex
Menentukan indeks berbasis nol dari string.

Tampilkan Nilai

Panjang string dalam karakter, tidak termasuk karakter null yang dihentikan. Jika nIndex tidak menentukan indeks yang valid, nilai yang dikembalikan adalah LB_ERR.

Contoh

Lihat contoh untuk CListBox::GetText.

CListBox::GetTopIndex

Mengambil indeks berbasis nol dari item pertama yang terlihat dalam kotak daftar.

int GetTopIndex() const;

Tampilkan Nilai

Indeks berbasis nol dari item pertama yang terlihat dalam kotak daftar jika berhasil, LB_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 n = m_myListBox.GetCount() / 2;
if (m_myListBox.GetTopIndex() < n)
{
   m_myListBox.SetTopIndex(n);
   ASSERT(m_myListBox.GetTopIndex() == n);
}

CListBox::InitStorage

Mengalokasikan memori untuk menyimpan item kotak daftar.

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 kotak daftar sebelum realokasi memori diperlukan, jika tidak LB_ERRSPACE, artinya memori tidak cukup tersedia.

Keterangan

Panggil fungsi ini sebelum menambahkan sejumlah besar item ke CListBox.

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.

Hanya Windows 95/98: Parameter nItems 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.

Contoh

// Initialize the storage of the list box to be 256 strings with
// about 10 characters per string, performance improvement.
int n = m_myListBox.InitStorage(256, 16 * sizeof(TCHAR));
ASSERT(n != LB_ERRSPACE);

// Add 256 items to the list box.
CString str;
for (int i = 0; i < 256; i++)
{
   str.Format(_T("item string %d"), i);
   m_myListBox.AddString(str);
}

CListBox::InsertString

Menyisipkan string ke dalam kotak daftar.

int InsertString(
    int nIndex,
    LPCTSTR lpszItem);

Parameter

nIndex
Menentukan indeks posisi berbasis nol untuk menyisipkan string. Jika parameter ini adalah -1, string ditambahkan ke akhir daftar.

lpszItem
Menunjuk ke string null-terminated yang akan disisipkan.

Tampilkan Nilai

Indeks berbasis nol dari posisi tempat string disisipkan. Nilai yang dikembalikan adalah LB_ERR jika terjadi kesalahan; nilai yang dikembalikan adalah LB_ERRSPACE jika ruang yang tidak mencukup tersedia untuk menyimpan string baru.

Keterangan

AddString Tidak seperti fungsi anggota, InsertString tidak menyebabkan daftar dengan LBS_SORT gaya diurutkan.

Contoh

// Insert items in between existing items.
CString str;
int n = m_myListBox.GetCount();
for (int i = 0; i < n; i++)
{
   str.Format(_T("item string %c"), (char)('A' + i));
   m_myListBox.InsertString(2 * i, str);
}

CListBox::ItemFromPoint

Menentukan item kotak daftar terdekat dengan titik yang ditentukan dalam pt.

UINT ItemFromPoint(
    CPoint pt,
    BOOL& bOutside) const;

Parameter

pt
Titik untuk menemukan item terdekat, ditentukan relatif terhadap sudut kiri atas area klien kotak daftar.

bOutside
Referensi ke BOOL variabel yang akan diatur ke TRUE jika pt berada di luar area klien kotak daftar, FALSE jika pt berada di dalam area klien kotak daftar.

Tampilkan Nilai

Indeks item terdekat ke titik yang ditentukan dalam pt.

Keterangan

Anda dapat menggunakan fungsi ini untuk menentukan item kotak daftar mana yang dipindahkan kursor mouse.

Contoh

Lihat contoh untuk CListBox::SetAnchorIndex.

CListBox::MeasureItem

Dipanggil oleh kerangka kerja saat kotak daftar 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. Jika kotak daftar dibuat dengan LBS_OWNERDRAWVARIABLE gaya, kerangka kerja memanggil fungsi anggota ini untuk setiap item dalam kotak daftar. Jika tidak, anggota ini hanya dipanggil sekali.

Untuk informasi lebih lanjut tentang menggunakan LBS_OWNERDRAWFIXED gaya dalam kotak daftar gambar pemilik yang dibuat dengan SubclassDlgItem fungsi CWndanggota , lihat diskusi di Catatan Teknis 14.

Lihat CWnd::OnMeasureItem untuk deskripsi MEASUREITEMSTRUCT struktur.

Contoh

// CMyODListBox is my owner-drawn list box derived from CListBox. This
// example measures an item and sets the height of the item to twice the
// vertical extent of its text. The list box control was created with the
// following code:
//   m_myODListBox.Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
//      CRect(10,250,200,450), pParentWnd, IDC_MYODLISTBOX);
//
void CMyODListBox::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
   ASSERT(lpMeasureItemStruct->CtlType == ODT_LISTBOX);
   LPCTSTR lpszText = (LPCTSTR)lpMeasureItemStruct->itemData;
   ASSERT(lpszText != NULL);
   CSize sz;
   CDC *pDC = GetDC();

   sz = pDC->GetTextExtent(lpszText);

   ReleaseDC(pDC);

   lpMeasureItemStruct->itemHeight = 2 * sz.cy;
}

CListBox::ResetContent

Menghapus semua item dari kotak daftar.

void ResetContent();

Contoh

// Delete all the items from the list box.
m_myListBox.ResetContent();
ASSERT(m_myListBox.GetCount() == 0);

CListBox::SelectString

Mencari item kotak daftar yang cocok dengan string yang ditentukan, dan jika item yang cocok ditemukan, item tersebut akan memilih item.

int SelectString(
    int nStartAfter,
    LPCTSTR lpszItem);

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 nStartAfter -1, seluruh kotak daftar dicari dari awal.

lpszItem
Menunjuk ke string null-terminated yang berisi awalan yang akan dicari. Pencarian bersifat independen huruf besar/kecil, sehingga string ini mungkin berisi kombinasi huruf besar dan huruf kecil.

Tampilkan Nilai

Indeks item terpilih jika pencarian berhasil. Jika pencarian tidak berhasil, nilai yang dikembalikan adalah LB_ERR dan pilihan saat ini tidak diubah.

Keterangan

Kotak daftar digulir, jika perlu, untuk menampilkan item yang dipilih.

Fungsi anggota ini tidak dapat digunakan dengan kotak daftar yang memiliki LBS_MULTIPLESEL gaya.

Item dipilih hanya jika karakter awalnya (dari titik awal) cocok dengan karakter dalam string yang ditentukan oleh lpszItem.

FindString Gunakan fungsi anggota untuk menemukan string tanpa memilih item.

Contoh

// The string to match.
LPCTSTR lpszmyString = _T("item 5");

// Select the item that begins with the specified string.
int nIndex = m_myListBox.SelectString(0, lpszmyString);
ASSERT(nIndex != LB_ERR);

CListBox::SelItemRange

Memilih beberapa item berturut-turut dalam kotak daftar beberapa pilihan.

int SelItemRange(
    BOOL bSelect,
    int nFirstItem,
    int nLastItem);

Parameter

bSelect
Menentukan cara mengatur pilihan. Jika bSelect adalah TRUE, string dipilih dan disorot; jika FALSE, sorotan dihapus dan string tidak lagi dipilih.

nFirstItem
Menentukan indeks berbasis nol dari item pertama yang akan diatur.

nLastItem
Menentukan indeks berbasis nol dari item terakhir yang akan diatur.

Tampilkan Nilai

LB_ERR jika terjadi kesalahan.

Keterangan

Gunakan fungsi anggota ini hanya dengan kotak daftar beberapa pilihan. Jika Anda hanya perlu memilih satu item dalam kotak daftar beberapa pilihan — artinya, jika nFirstItem sama dengan nLastItem — panggil fungsi anggota sebagai gantinya SetSel .

Contoh

// Select half of the items.
m_myODListBox.SelItemRange(TRUE, 0, m_myODListBox.GetCount() / 2);

CListBox::SetAnchorIndex

Mengatur jangkar dalam kotak daftar beberapa pilihan untuk memulai pilihan yang diperluas.

void SetAnchorIndex(int nIndex);

Parameter

nIndex
Menentukan indeks berbasis nol dari item kotak daftar yang akan menjadi jangkar.

Keterangan

Dalam kotak daftar beberapa pilihan, item jangkar adalah item pertama atau terakhir dalam blok item yang dipilih yang berdampingan.

Contoh

void CMyODListBox::OnLButtonDown(UINT nFlags, CPoint point)
{
   BOOL bOutside = TRUE;
   UINT uItem = ItemFromPoint(point, bOutside);

   if (!bOutside)
   {
      // Set the anchor to be the middle item.
      SetAnchorIndex(uItem);
      ASSERT((UINT)GetAnchorIndex() == uItem);
   }

   CListBox::OnLButtonDown(nFlags, point);
}

CListBox::SetCaretIndex

Mengatur persegi panjang fokus ke item pada indeks yang ditentukan dalam kotak daftar beberapa pilihan.

int SetCaretIndex(
    int nIndex,
    BOOL bScroll = TRUE);

Parameter

nIndex
Menentukan indeks berbasis nol item untuk menerima persegi panjang fokus dalam kotak daftar.

bScroll
Jika nilai ini adalah 0, item akan digulir hingga terlihat sepenuhnya. Jika nilai ini bukan 0, item digulir hingga setidaknya terlihat sebagian.

Tampilkan Nilai

LB_ERR jika terjadi kesalahan.

Keterangan

Jika item tidak terlihat, item akan digulir ke tampilan.

Contoh

// Set the caret to be the middle item.
m_myListBox.SetCaretIndex(m_myListBox.GetCount() / 2);
ASSERT(m_myListBox.GetCaretIndex() == m_myListBox.GetCount() / 2);

CListBox::SetColumnWidth

Mengatur lebar dalam piksel semua kolom dalam kotak daftar multikolom (dibuat dengan LBS_MULTICOLUMN gaya).

void SetColumnWidth(int cxWidth);

Parameter

cxWidth
Menentukan lebar dalam piksel semua kolom.

Contoh

// Find the pixel width of the largest item.
CString str;
CSize   sz;
int     dx = 0;
CDC* pDC = myListBox.GetDC();
for (int i = 0; i < myListBox.GetCount(); i++)
{
   myListBox.GetText(i, str);
   sz = pDC->GetTextExtent(str);

   if (sz.cx > dx)
      dx = sz.cx;
}
myListBox.ReleaseDC(pDC);

// Set the column width of the first column to be one and 1/3 units
// of the largest string. 
myListBox.SetColumnWidth(dx * 4 / 3);

CListBox::SetCurSel

Memilih string dan menggulirnya ke tampilan, jika perlu.

int SetCurSel(int nSelect);

Parameter

nSelect
Menentukan indeks berbasis nol dari string yang akan dipilih. Jika nSelect -1, kotak daftar diatur agar tidak memiliki pilihan.

Tampilkan Nilai

LB_ERR jika terjadi kesalahan.

Keterangan

Saat string baru dipilih, kotak daftar menghapus sorotan dari string yang dipilih sebelumnya.

Gunakan fungsi anggota ini hanya dengan kotak daftar pilihan tunggal.

Untuk mengatur atau menghapus pilihan dalam kotak daftar beberapa pilihan, gunakan CListBox::SetSel.

Contoh

// Select the last item in the list box.
int nCount = m_myListBox.GetCount();
if (nCount > 0)
   m_myListBox.SetCurSel(nCount - 1);

CListBox::SetHorizontalExtent

Mengatur lebar, dalam piksel, di mana kotak daftar dapat digulir secara horizontal.

void SetHorizontalExtent(int cxExtent);

Parameter

cxExtent
Menentukan jumlah piksel tempat kotak daftar dapat digulir secara horizontal.

Keterangan

Jika ukuran kotak daftar lebih kecil dari nilai ini, bilah gulir horizontal akan menggulir item secara horizontal dalam kotak daftar. Jika kotak daftar sama besar atau lebih besar dari nilai ini, bilah gulir horizontal disembunyikan.

Untuk merespons panggilan ke SetHorizontalExtent, kotak daftar harus ditentukan dengan WS_HSCROLL gaya.

Fungsi anggota ini tidak berguna untuk kotak daftar multikolom. Untuk kotak daftar multikolom, panggil SetColumnWidth fungsi anggota.

Contoh

// Find the longest string in the list box.
CString str;
CSize sz;
int dx = 0;
TEXTMETRIC tm;
CDC *pDC = m_myListBox.GetDC();
CFont *pFont = m_myListBox.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_myListBox.GetCount(); i++)
{
   m_myListBox.GetText(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_myListBox.ReleaseDC(pDC);

// Set the horizontal extent so every character of all strings
// can be scrolled to.
m_myListBox.SetHorizontalExtent(dx);

CListBox::SetItemData

Mengatur nilai yang terkait dengan item yang ditentukan dalam kotak daftar.

int SetItemData(
    int nIndex,
    DWORD_PTR dwItemData);

Parameter

nIndex
Menentukan indeks item berbasis nol.

dwItemData
Menentukan nilai yang akan dikaitkan dengan item.

Tampilkan Nilai

LB_ERR jika terjadi kesalahan.

Contoh

// Set the data of each item to be equal to its index.
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   m_myListBox.SetItemData(i, i);
}

CListBox::SetItemDataPtr

Mengatur nilai 32-bit yang terkait dengan item yang ditentukan dalam kotak daftar menjadi penunjuk yang ditentukan ( void *).

int SetItemDataPtr(
    int nIndex,
    void* pData);

Parameter

nIndex
Menentukan indeks item berbasis nol.

pData
Menentukan penunjuk yang akan dikaitkan dengan item.

Tampilkan Nilai

LB_ERR jika terjadi kesalahan.

Keterangan

Penunjuk ini tetap valid untuk masa pakai kotak daftar, meskipun posisi relatif item dalam kotak daftar 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_myListBox.GetCount(); i++)
{
   m_myListBox.SetItemDataPtr(i, NULL);
}

CListBox::SetItemHeight

Mengatur tinggi item dalam kotak daftar.

int SetItemHeight(
    int nIndex,
    UINT cyItemHeight);

Parameter

nIndex
Menentukan indeks berbasis nol item dalam kotak daftar. Parameter ini hanya digunakan jika kotak daftar memiliki LBS_OWNERDRAWVARIABLE gaya; jika tidak, parameter harus diatur ke 0.

cyItemHeight
Menentukan tinggi, dalam piksel, item.

Tampilkan Nilai

LB_ERR jika indeks atau tinggi tidak valid.

Keterangan

Jika kotak daftar memiliki LBS_OWNERDRAWVARIABLE gaya, fungsi ini mengatur tinggi item yang ditentukan oleh nIndex. Jika tidak, fungsi ini mengatur tinggi semua item dalam kotak daftar.

Contoh

// Set the height of every item to be the
// vertical size of the item's text extent.
CString str;
CSize sz;
CDC *pDC = myListBox.GetDC();
for (int i = 0; i < myListBox.GetCount(); i++)
{
   myListBox.GetText(i, str);
   sz = pDC->GetTextExtent(str);

   myListBox.SetItemHeight(i, sz.cy);
}
myListBox.ReleaseDC(pDC);

CListBox::SetLocale

Mengatur pengidentifikasi lokal untuk kotak daftar ini.

LCID SetLocale(LCID nNewLocale);

Parameter

nNewLocale
Nilai pengidentifikasi lokal (LCID) baru yang akan diatur untuk kotak daftar.

Tampilkan Nilai

Nilai pengidentifikasi lokal sebelumnya (LCID) untuk kotak daftar 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_myListBox.SetLocale(mylcid);
ASSERT(m_myListBox.GetLocale() == mylcid);

CListBox::SetSel

Memilih string dalam kotak daftar beberapa pilihan.

int SetSel(
    int nIndex,
    BOOL bSelect = TRUE);

Parameter

nIndex
Berisi indeks berbasis nol dari string yang akan diatur. Jika -1, pilihan ditambahkan ke atau dihapus dari semua string, tergantung pada nilai bSelect.

bSelect
Menentukan cara mengatur pilihan. Jika bSelect adalah TRUE, string dipilih dan disorot; jika FALSE, sorotan dihapus dan string tidak lagi dipilih. String yang ditentukan dipilih dan disorot secara default.

Tampilkan Nilai

LB_ERR jika terjadi kesalahan.

Keterangan

Gunakan fungsi anggota ini hanya dengan kotak daftar beberapa pilihan.

Untuk memilih item dari kotak daftar pilihan tunggal, gunakan CListBox::SetCurSel.

Contoh

// Select all of the items with an even index and
// deselect all others.
for (int i = 0; i < m_myODListBox.GetCount(); i++)
{
   m_myODListBox.SetSel(i, ((i % 2) == 0));
}

CListBox::SetTabStops

Mengatur posisi perhentian tab dalam kotak daftar.

void SetTabStops();
BOOL SetTabStops(const int& cxEachStop);

BOOL SetTabStops(
    int nTabStops,
    LPINT rgTabStops);

Parameter

cxEachStop
Perhentian tab diatur di setiap cxEachStop unit dialog. Lihat rgTabStops untuk deskripsi unit dialog.

nTabStops
Menentukan jumlah perhentian tab yang akan dimiliki dalam kotak daftar.

rgTabStops
Menunjuk ke anggota pertama array bilangan bulat yang berisi posisi perhentian tab dalam unit dialog. Unit dialog adalah jarak horizontal atau vertikal. Satu unit dialog horizontal sama dengan sebelas dari unit lebar dasar dialog saat ini, dan satu unit dialog vertikal sama dengan sedelapis unit tinggi dasar dialog saat ini. Unit dasar dialog dihitung berdasarkan tinggi dan lebar font sistem saat ini. Fungsi GetDialogBaseUnits Windows mengembalikan unit dasar dialog saat ini dalam piksel. Perhentian tab harus diurutkan dalam urutan yang meningkat; tab belakang tidak diperbolehkan.

Tampilkan Nilai

Nonzero jika semua tab diatur; jika tidak, 0.

Keterangan

Untuk mengatur perhentian tab ke ukuran default 2 unit dialog, panggil versi tanpa parameter fungsi anggota ini. Untuk mengatur perhentian tab ke ukuran selain 2, panggil versi dengan cxEachStop argumen .

Untuk mengatur perhentian tab ke array ukuran, gunakan versi dengan rgTabStops argumen dan nTabStops . Perhentian tab akan diatur untuk setiap nilai di rgTabStops, hingga angka yang ditentukan oleh nTabStops.

Untuk merespons panggilan ke SetTabStops fungsi anggota, kotak daftar harus dibuat dengan LBS_USETABSTOPS gaya.

Contoh

// Find the pixel width of the largest first substring.
CString str;
CSize sz;
int nIndex, dx = 0;
CDC *pDC = myListBox.GetDC();
for (int i = 0; i < myListBox.GetCount(); i++)
{
   myListBox.GetText(i, str);

   if ((nIndex = str.Find('\t')) != -1)
      str = str.Right(nIndex);

   sz = pDC->GetTextExtent(str);

   if (sz.cx > dx)
      dx = sz.cx;
}
myListBox.ReleaseDC(pDC);

// Set tab stops at every one and 1/3 units
// of the largest string.
// NOTE: Convert pixels to dialog units.
myListBox.SetTabStops((dx * 4 / 3 * 4) / LOWORD(::GetDialogBaseUnits()));

CListBox::SetTopIndex

Memastikan bahwa item kotak daftar tertentu terlihat.

int SetTopIndex(int nIndex);

Parameter

nIndex
Menentukan indeks berbasis nol dari item kotak daftar.

Tampilkan Nilai

Nol jika berhasil, atau LB_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 list box to be the middle item
m_myListBox.SetTopIndex(m_myListBox.GetCount() / 2);

CListBox::VKeyToItem

Dipanggil oleh kerangka kerja saat jendela induk kotak daftar menerima pesan WM_VKEYTOITEM dari kotak daftar.

virtual int VKeyToItem(
    UINT nKey,
    UINT nIndex);

Parameter

nKey
Kode kunci virtual kunci yang ditekan pengguna. Untuk daftar kode kunci virtual standar, lihat Winuser.h

nIndex
Posisi kart kotak daftar saat ini.

Tampilkan Nilai

Mengembalikan - 2 untuk tidak ada tindakan lebih lanjut, - 1 untuk tindakan default, atau angka nonnegatif untuk menentukan indeks item kotak daftar tempat melakukan tindakan default untuk penekanan kunci.

Keterangan

Pesan WM_VKEYTOITEM dikirim oleh kotak daftar saat menerima pesan WM_KEYDOWN , tetapi hanya jika kotak daftar memenuhi kedua hal berikut ini:

Anda tidak boleh menyebut fungsi ini sendiri. Ambil alih fungsi ini untuk menyediakan penanganan pesan keyboard kustom Anda sendiri.

Anda harus mengembalikan nilai untuk memberi tahu kerangka kerja tindakan apa yang dilakukan penimpaan Anda. Nilai pengembalian - 2 menunjukkan bahwa aplikasi menangani semua aspek memilih item dan tidak memerlukan tindakan lebih lanjut oleh kotak daftar. Sebelum kembali - 2, Anda dapat mengatur pilihan atau memindahkan tanda sisipan atau keduanya. Untuk mengatur pilihan, gunakan SetCurSel atau SetSel. Untuk memindahkan tanda sisipan, gunakan SetCaretIndex.

Nilai pengembalian - 1 menunjukkan bahwa kotak daftar harus melakukan tindakan default sebagai respons terhadap penekanan tombol. Implementasi default mengembalikan - 1.

Nilai pengembalian 0 atau lebih besar menentukan indeks item dalam kotak daftar dan menunjukkan bahwa kotak daftar harus melakukan tindakan default untuk penekanan tombol pada item yang diberikan.

Contoh

// CMyODListBox is my owner-drawn list box derived from CListBox. This
// example moves the caret down one item on the down key and up one item
// on the up key. The list box control was created with the following
// code:
//   m_myODListBox.Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
//      CRect(10,250,200,450), pParentWnd, IDC_MYODLISTBOX);
//
int CMyODListBox::VKeyToItem(UINT nKey, UINT nIndex)
{
   // On key up, move the caret up one item.
   if ((nKey == VK_UP) && (nIndex > 0))
   {
      SetCaretIndex(nIndex - 1);
   }
   // On key down, move the caret down one item.
   else if ((nKey == VK_DOWN) && (nIndex < (UINT)GetCount()))
   {
      SetCaretIndex(nIndex + 1);
   }

   // Do not perform any default processing.
   return -2;
}

Lihat juga

Sampel MFC CTRLTEST
CWnd Kelas
Bagan Hierarki
CWnd Kelas
CButton Kelas
CComboBox Kelas
CEdit Kelas
CScrollBar Kelas
CStatic Kelas