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 yangLBS_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 memilikiLBS_NOTIFY
gaya.ON_LBN_SELCHANGE
Pilihan dalam kotak daftar telah berubah. Pemberitahuan ini tidak dikirim jika pilihan diubah olehCListBox::SetCurSel
fungsi anggota. Pemberitahuan ini hanya berlaku untuk kotak daftar yang memilikiLBS_NOTIFY
gaya. PesanLBN_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 menerimaWM_CHAR
pesan.ON_WM_VKEYTOITEM
Kotak daftar denganLBS_WANTKEYBOARDINPUT
gaya menerima pesanWM_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
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_NCCREATE
pesan , , WM_CREATE
WM_NCCALCSIZE
, dan WM_GETMINMAXINFO
ke kontrol kotak daftar.
Pesan ini ditangani secara default oleh OnNcCreate
fungsi anggota , , OnCreate
OnNcCalcSize
, dan OnGetMinMaxInfo
di CWnd
kelas dasar. Untuk memperluas penanganan pesan default, dapatkan kelas dari 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
SelaluWS_VISIBLE
BiasanyaWS_DISABLED
JarangWS_VSCROLL
Untuk menambahkan bilah gulir vertikalWS_HSCROLL
Untuk menambahkan bilah gulir horizontalWS_GROUP
Untuk mengelompokkan kontrolWS_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
, , InsertString
dan Dir
membutuhkan waktu sesingkat mungkin. Anda dapat menggunakan perkiraan untuk parameter. Jika Anda berlebihan, beberapa memori tambahan dialokasikan; jika Anda meremehkan, alokasi normal digunakan untuk item yang melebihi jumlah yang telah dialokasikan sebelumnya.
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 CWnd
anggota , 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:
LBS_WANTKEYBOARDINPUT
Memiliki set gaya.Memiliki setidaknya satu item.
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