Delen via


CListBox-klasse

Biedt de functionaliteit van een Windows-keuzelijst.

Syntaxis

class CListBox : public CWnd

Members

Openbare constructors

Naam Description
CListBox::CListBox Maakt een CListBox object.

Openbare methoden

Naam Description
CListBox::AddString Hiermee voegt u een tekenreeks toe aan een keuzelijst.
CListBox::CharToItem Overschrijven om aangepaste WM_CHAR verwerking te bieden voor keuzelijsten met eigenaartekeningen die geen tekenreeksen hebben.
CListBox::CompareItem Aangeroepen door het framework om de positie van een nieuw item in een gesorteerde keuzelijst met eigenaartekening te bepalen.
CListBox::Create Hiermee maakt u de Windows-keuzelijst en koppelt u deze aan het CListBox object.
CListBox::DeleteItem Aangeroepen door het framework wanneer de gebruiker een item verwijdert uit een keuzelijst met eigenaartekeningen.
CListBox::DeleteString Hiermee verwijdert u een tekenreeks uit een keuzelijst.
CListBox::Dir Voegt bestandsnamen, stations of beide uit de huidige map toe aan een keuzelijst.
CListBox::DrawItem Aangeroepen door het framework wanneer een visueel aspect van een keuzelijst met eigenaartekening wordt gewijzigd.
CListBox::FindString Zoekt naar een tekenreeks in een keuzelijst.
CListBox::FindStringExact Hiermee zoekt u de eerste keuzelijsttekenreeks die overeenkomt met een opgegeven tekenreeks.
CListBox::GetAnchorIndex Haalt de op nul gebaseerde index van het huidige ankeritem op in een keuzelijst.
CListBox::GetCaretIndex Bepaalt de index van het item met de focusrechthoek in een keuzelijst met meerdere keuzemogelijkheden.
CListBox::GetCount Retourneert het aantal tekenreeksen in een keuzelijst.
CListBox::GetCurSel Retourneert de op nul gebaseerde index van de geselecteerde tekenreeks in een keuzelijst.
CListBox::GetHorizontalExtent Retourneert de breedte in pixels dat een keuzelijst horizontaal kan worden geschoven.
CListBox::GetItemData Retourneert een waarde die is gekoppeld aan het keuzelijstitem.
CListBox::GetItemDataPtr Retourneert een aanwijzer naar een keuzelijstitem.
CListBox::GetItemHeight Bepaalt de hoogte van items in een keuzelijst.
CListBox::GetItemRect Retourneert de begrenzingsrechthoek van het keuzelijstitem zoals het momenteel wordt weergegeven.
CListBox::GetListBoxInfo Hiermee wordt het aantal items per kolom opgehaald.
CListBox::GetLocale Hiermee haalt u de landinstellingen-id voor een keuzelijst op.
CListBox::GetSel Retourneert de selectiestatus van een keuzelijstitem.
CListBox::GetSelCount Retourneert het aantal tekenreeksen dat momenteel is geselecteerd in een keuzelijst met meerdere keuzemogelijkheden.
CListBox::GetSelItems Retourneert de indexen van de tekenreeksen die momenteel zijn geselecteerd in een keuzelijst.
CListBox::GetText Kopieert een keuzelijstitem naar een buffer.
CListBox::GetTextLen Retourneert de lengte in bytes van een keuzelijstitem.
CListBox::GetTopIndex Retourneert de index van de eerste zichtbare tekenreeks in een keuzelijst.
CListBox::InitStorage Hiermee worden blokken geheugen voor keuzelijstitems en tekenreeksen vooraf toegewezen.
CListBox::InsertString Hiermee voegt u een tekenreeks in op een specifieke locatie in een keuzelijst.
CListBox::ItemFromPoint Retourneert de index van het keuzelijstitem bij het dichtstbijzijnde punt.
CListBox::MeasureItem Aangeroepen door het framework wanneer een keuzelijst met eigenaartekening wordt gemaakt om de afmetingen van de keuzelijst te bepalen.
CListBox::ResetContent Hiermee worden alle items uit een keuzelijst gewist.
CListBox::SelectString Hiermee zoekt en selecteert u een tekenreeks in een keuzelijst met één keuzelijst.
CListBox::SelItemRange Hiermee selecteert of deselecteert u een reeks tekenreeksen in een keuzelijst met meerdere keuzemogelijkheden.
CListBox::SetAnchorIndex Hiermee stelt u het anker in een keuzelijst met meerdere keuzemogelijkheden in om een uitgebreide selectie te starten.
CListBox::SetCaretIndex Hiermee stelt u de focusrechthoek in op het item op de opgegeven index in een keuzelijst met meerdere keuzemogelijkheden.
CListBox::SetColumnWidth Hiermee stelt u de kolombreedte van een keuzelijst met meerdere kolommen in.
CListBox::SetCurSel Hiermee selecteert u een keuzelijsttekenreeks.
CListBox::SetHorizontalExtent Hiermee stelt u de breedte in pixels in die een keuzelijst horizontaal kan worden geschoven.
CListBox::SetItemData Hiermee stelt u een waarde in die is gekoppeld aan het keuzelijstitem.
CListBox::SetItemDataPtr Hiermee stelt u een aanwijzer in op het keuzelijstitem.
CListBox::SetItemHeight Hiermee stelt u de hoogte van items in een keuzelijst in.
CListBox::SetLocale Hiermee stelt u de landinstellingen-id voor een keuzelijst in.
CListBox::SetSel Hiermee selecteert of deselecteert u een keuzelijstitem in een keuzelijst met meerdere keuzemogelijkheden.
CListBox::SetTabStops Hiermee stelt u de tabstopposities in een keuzelijst in.
CListBox::SetTopIndex Hiermee stelt u de op nul gebaseerde index van de eerste zichtbare tekenreeks in een keuzelijst in.
CListBox::VKeyToItem Overschrijven om aangepaste WM_KEYDOWN verwerking voor keuzelijsten met de LBS_WANTKEYBOARDINPUT stijlset te bieden.

Opmerkingen

In een keuzelijst wordt een lijst met items weergegeven, zoals bestandsnamen, die de gebruiker kan bekijken en selecteren.

In een keuzelijst met één keuzelijst kan de gebruiker slechts één item selecteren. In een keuzelijst met meerdere keuzemogelijkheden kunt u een reeks items selecteren. Wanneer de gebruiker een item selecteert, wordt dit gemarkeerd en verzendt de keuzelijst een meldingsbericht naar het bovenliggende venster.

U kunt een keuzelijst maken op basis van een dialoogvenstersjabloon of rechtstreeks in uw code. Als u het object rechtstreeks wilt maken, maakt u het CListBox object en roept u vervolgens de Create lidfunctie aan om het Besturingselement keuzelijst van Windows te maken en deze aan het CListBox object te koppelen. Als u een keuzelijst in een dialoogvenstersjabloon wilt gebruiken, declareert u een keuzelijstvariabele in de dialoogvensterklasse en gebruikt DDX_Control u vervolgens de functie van DoDataExchange de dialoogvensterklasse om de lidvariabele te verbinden met het besturingselement. (Dit wordt automatisch gedaan wanneer u een besturingselementvariabele toevoegt aan de dialoogvensterklasse.)

Constructie kan een proces in één stap zijn in een klasse die is afgeleid van CListBox. Schrijf een constructor voor de afgeleide klasse en roep Create aan vanuit de constructor.

Als u Windows-meldingsberichten wilt verwerken die door een keuzelijst naar het bovenliggende vak worden verzonden (meestal een klasse die is afgeleid van CDialog), voegt u voor elk bericht een berichttoewijzingsvermelding en een berichtenhandlerlidfunctie toe aan de bovenliggende klasse.

Elke berichtkaartvermelding heeft het volgende formulier:

ON_Notification( id, memberFxn )

waarbij id de id van het onderliggende venster van het keuzelijstbesturingselement waarmee de melding wordt verzonden en memberFxn de naam is van de bovenliggende lidfunctie die u hebt geschreven om de melding te verwerken.

Het prototype van de functie van de bovenliggende functie is als volgt:

afx_msg void memberFxn( );

Hieronder volgt een lijst met mogelijke berichtenoverzichtvermeldingen en een beschrijving van de gevallen waarin ze naar het bovenliggende item worden verzonden:

  • ON_LBN_DBLCLK De gebruiker dubbelklikt op een tekenreeks in een keuzelijst. Alleen een keuzelijst met de LBS_NOTIFY stijl verzendt dit meldingsbericht.

  • ON_LBN_ERRSPACE De keuzelijst kan onvoldoende geheugen toewijzen om aan de aanvraag te voldoen.

  • ON_LBN_KILLFOCUS De invoerfocus gaat verloren in de keuzelijst.

  • ON_LBN_SELCANCEL De huidige keuzelijst is geannuleerd. Dit bericht wordt alleen verzonden wanneer een keuzelijst de LBS_NOTIFY stijl heeft.

  • ON_LBN_SELCHANGE De selectie in de keuzelijst is gewijzigd. Deze melding wordt niet verzonden als de selectie wordt gewijzigd door de CListBox::SetCurSel lidfunctie. Deze melding is alleen van toepassing op een keuzelijst met de LBS_NOTIFY stijl. Het LBN_SELCHANGE meldingsbericht wordt verzonden voor een keuzelijst met meerdere keuzemogelijkheden wanneer de gebruiker op een pijltoets drukt, zelfs als de selectie niet verandert.

  • ON_LBN_SETFOCUS De invoerfocus wordt ontvangen in de keuzelijst.

  • ON_WM_CHARTOITEM Een keuzelijst met eigenaartekeningen zonder tekenreeksen ontvangt een WM_CHAR bericht.

  • ON_WM_VKEYTOITEM Een keuzelijst met de LBS_WANTKEYBOARDINPUT stijl ontvangt een WM_KEYDOWN bericht.

Als u een CListBox object in een dialoogvenster maakt (via een dialoogvensterresource), wordt het CListBox object automatisch vernietigd wanneer de gebruiker het dialoogvenster sluit.

Als u een CListBox object in een venster maakt, moet u het CListBox object mogelijk vernietigen. Als u het CListBox object op de stapel maakt, wordt het automatisch vernietigd. Als u het CListBox object op de heap maakt met behulp van de new functie, moet u het object aanroepen delete om het te vernietigen wanneer de gebruiker het bovenliggende venster sluit.

Als u geheugen in het CListBox object toewijst, overschrijft u destructor CListBox om de toewijzing te verwijderen.

Overnamehiërarchie

CObject

CCmdTarget

CWnd

CListBox

Requirements

Rubriek:afxwin.h

CListBox::AddString

Hiermee voegt u een tekenreeks toe aan een keuzelijst.

int AddString(LPCTSTR lpszItem);

Parameterwaarden

lpszItem
Verwijst naar de door null beëindigde tekenreeks die moet worden toegevoegd.

Retourwaarde

De op nul gebaseerde index voor de tekenreeks in de keuzelijst. De retourwaarde is LB_ERR als er een fout optreedt. De retourwaarde is LB_ERRSPACE als er onvoldoende ruimte beschikbaar is om de nieuwe tekenreeks op te slaan.

Opmerkingen

Als de keuzelijst niet is gemaakt met de LBS_SORT stijl, wordt de tekenreeks toegevoegd aan het einde van de lijst. Anders wordt de tekenreeks ingevoegd in de lijst en wordt de lijst gesorteerd. Als de keuzelijst is gemaakt met de LBS_SORT stijl maar niet met de LBS_HASSTRINGS stijl, sorteert het framework de lijst op een of meer aanroepen naar de CompareItem lidfunctie.

Hiermee InsertString voegt u een tekenreeks in op een specifieke locatie in de keuzelijst.

Example

// 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

Aangeroepen door het framework wanneer het bovenliggende venster van de keuzelijst een WM_CHARTOITEM bericht van de keuzelijst ontvangt.

virtual int CharToItem(
    UINT nKey,
    UINT nIndex);

Parameterwaarden

nKey
De ANSI-code van het teken dat de gebruiker heeft getypt.

nIndex
De huidige positie van de keuzelijstbezorger.

Retourwaarde

Retourneert - 1 of - 2 voor geen verdere actie of een niet-negatief getal om een index van een keuzelijstitem op te geven waarop de standaardactie voor de toetsaanslag moet worden uitgevoerd. De standaard implementatie retourneert - 1.

Opmerkingen

Het WM_CHARTOITEM bericht wordt verzonden door de keuzelijst wanneer het een WM_CHAR bericht ontvangt, maar alleen als de keuzelijst aan al deze criteria voldoet:

  • Is een keuzelijst met eigenaartekening.

  • De stijl is niet LBS_HASSTRINGS ingesteld.

  • Heeft ten minste één item.

U moet deze functie nooit zelf aanroepen. Overschrijf deze functie om uw eigen aangepaste verwerking van toetsenbordberichten te bieden.

In uw onderdrukking moet u een waarde retourneren om het framework te vertellen welke actie u hebt uitgevoerd. Een retourwaarde van - 1 of - 2 geeft aan dat u alle aspecten van het selecteren van het item hebt verwerkt en geen verdere actie door de keuzelijst vereist. Voordat u terugkeert - 1 of - 2, kunt u de selectie instellen of de caret of beide verplaatsen. Als u de selectie wilt instellen, gebruikt SetCurSel u of SetSel. Als u de caret wilt verplaatsen, gebruikt u SetCaretIndex.

Een retourwaarde van 0 of hoger geeft de index van een item in de keuzelijst aan en geeft aan dat de keuzelijst de standaardactie moet uitvoeren voor de toetsaanslag op het opgegeven item.

Example

// 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

Maakt een CListBox object.

CListBox();

Opmerkingen

U maakt een CListBox object in twee stappen. Roep eerst de constructor ClistBox aan en roep Createvervolgens aan, waarmee de Windows-keuzelijst wordt geïnitialiseerd en gekoppeld aan de CListBox.

Example

// Declare a local CListBox object.
CListBox myListBox;

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

CListBox::CompareItem

Aangeroepen door het framework om de relatieve positie van een nieuw item in een gesorteerde keuzelijst met eigenaartekening te bepalen.

virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);

Parameterwaarden

lpCompareItemStruct
Een lange aanwijzer naar een COMPAREITEMSTRUCT structuur.

Retourwaarde

Geeft de relatieve positie aan van de twee items die in de COMPAREITEMSTRUCT structuur worden beschreven. Dit kunnen een van de volgende waarden zijn:

Waarde Meaning
-1 Item 1 sorteert voor item 2.
0 Item 1 en item 2 sorteren hetzelfde.
1 Item 1 sorteert na item 2.

Zie CWnd::OnCompareItem voor een beschrijving van de COMPAREITEMSTRUCT structuur.

Opmerkingen

Deze lidfunctie doet standaard niets. Als u een keuzelijst met eigenaartekening met de LBS_SORT stijl maakt, moet u deze lidfunctie overschrijven om het framework te helpen bij het sorteren van nieuwe items die aan de keuzelijst zijn toegevoegd.

Example

// 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

Hiermee maakt u de Windows-keuzelijst en koppelt u deze aan het CListBox object.

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

Parameterwaarden

dwStyle
Hiermee geeft u de stijl van de keuzelijst. Pas een combinatie van keuzelijststijlen toe op het vak.

rect
Hiermee geeft u de grootte en positie van de keuzelijst op. Dit kan een CRect object of een RECT structuur zijn.

pParentWnd
Hiermee geeft u het bovenliggende venster van de keuzelijst (meestal een CDialog object). Het mag niet zijn NULL.

nID
Hiermee geeft u de besturingselement-id van de keuzelijst op.

Retourwaarde

Niet-nul indien geslaagd; anders 0.

Opmerkingen

U maakt een CListBox object in twee stappen. Roep eerst de constructor aan en roep Createvervolgens aan, waarmee de Windows-keuzelijst wordt geïnitialiseerd en aan het CListBox object wordt gekoppeld.

Wanneer Create dit wordt uitgevoerd, verzendt Windows het WM_NCCREATEbesturingselement , WM_CREATEen WM_NCCALCSIZEWM_GETMINMAXINFO berichten naar het keuzelijstbesturingselement.

Deze berichten worden standaard verwerkt door de OnNcCreatefuncties , OnCreateen OnNcCalcSizeOnGetMinMaxInfo leden in de CWnd basisklasse. Als u de standaardverwerking van berichten wilt uitbreiden, moet u een klasse afleiden van CListBox, een berichttoewijzing toevoegen aan de nieuwe klasse en de voorgaande berichtenhandlerlidfuncties overschrijven. Overschrijven OnCreate, bijvoorbeeld om de benodigde initialisatie voor een nieuwe klasse uit te voeren.

Pas de volgende vensterstijlen toe op een keuzelijstbesturingselement.

  • WS_CHILD Altijd

  • WS_VISIBLE Gewoonlijk

  • WS_DISABLED Zelden

  • WS_VSCROLL Een verticale schuifbalk toevoegen

  • WS_HSCROLL Een horizontale schuifbalk toevoegen

  • WS_GROUP Besturingselementen groeperen

  • WS_TABSTOP Tabbing naar dit besturingselement toestaan

Example

// 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

Aangeroepen door het framework wanneer de gebruiker een item verwijdert uit een eigenaar-tekenobject CListBox of de keuzelijst vernietigt.

virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);

Parameterwaarden

lpDeleteItemStruct
Een lange aanwijzer naar een Windows-structuur DELETEITEMSTRUCT die informatie over het verwijderde item bevat.

Opmerkingen

De standaard implementatie van deze functie doet niets. Overschrijf deze functie om indien nodig een keuzelijst met eigenaartekening opnieuw te tekenen.

Zie CWnd::OnDeleteItem voor een beschrijving van de DELETEITEMSTRUCT structuur.

Example

// 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

Hiermee verwijdert u het item in positie nIndex uit de keuzelijst.

int DeleteString(UINT nIndex);

Parameterwaarden

nIndex
Hiermee geeft u de op nul gebaseerde index van de tekenreeks die moet worden verwijderd.

Retourwaarde

Een telling van de tekenreeksen die in de lijst blijven. De retourwaarde is als nIndex een index groter is LB_ERR dan het aantal items in de lijst.

Opmerkingen

Alle items die volgen nIndex , gaan nu één positie omlaag. Als een keuzelijst bijvoorbeeld twee items bevat, zorgt het verwijderen van het eerste item ervoor dat het resterende item nu op de eerste positie staat. nIndex=0 voor het item op de eerste positie.

Example

// Delete every other item from the list box.
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   m_myListBox.DeleteString(i);
}

CListBox::Dir

Hiermee voegt u een lijst met bestandsnamen, stations of beide toe aan een keuzelijst.

int Dir(
    UINT attr,
    LPCTSTR lpszWildCard);

Parameterwaarden

attr
Dit kan een combinatie zijn van de enum waarden die worden beschreven in CFile::GetStatus, of een combinatie van de volgende waarden:

Waarde Meaning
0x0000 Bestand kan worden gelezen van of naar geschreven.
0x0001 Bestand kan worden gelezen van maar niet naar geschreven.
0x0002 Het bestand is verborgen en wordt niet weergegeven in een lijst met mappen.
0x0004 Bestand is een systeembestand.
0x0010 De naam die is opgegeven door lpszWildCard een map.
0x0020 Het bestand is gearchiveerd.
0x4000 Neem alle stations op die overeenkomen met de naam die is opgegeven door lpszWildCard.
0x8000 Exclusieve vlag. Als de exclusieve vlag is ingesteld, worden alleen bestanden van het opgegeven type weergegeven. Anders worden bestanden van het opgegeven type weergegeven naast 'normale' bestanden.

lpszWildCard
Verwijst naar een tekenreeks voor bestandsspecificatie. De tekenreeks kan jokertekens bevatten (bijvoorbeeld *.*).

Retourwaarde

De op nul gebaseerde index van de laatste bestandsnaam die aan de lijst is toegevoegd. De retourwaarde is LB_ERR als er een fout optreedt. De retourwaarde is LB_ERRSPACE als er onvoldoende ruimte beschikbaar is om de nieuwe tekenreeksen op te slaan.

Example

// 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

Aangeroepen door het framework wanneer een visueel aspect van een keuzelijst met eigenaartekening wordt gewijzigd.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Parameterwaarden

lpDrawItemStruct
Een lange aanwijzer naar een DRAWITEMSTRUCT structuur die informatie bevat over het type tekening dat nodig is.

Opmerkingen

De itemAction en itemState leden van de DRAWITEMSTRUCT structuur definiëren de tekenactie die moet worden uitgevoerd.

Deze lidfunctie doet standaard niets. Overschrijf deze lidfunctie om tekening te implementeren voor een eigenaar-tekenobject CListBox . De toepassing moet alle GDI-objecten (Graphics Device Interface) herstellen die zijn geselecteerd voor de weergavecontext die is opgegeven lpDrawItemStruct voordat deze lidfunctie wordt beëindigd.

Zie CWnd::OnDrawItem voor een beschrijving van de DRAWITEMSTRUCT structuur.

Example

// 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

Hiermee zoekt u de eerste tekenreeks in een keuzelijst die het opgegeven voorvoegsel bevat zonder de keuzelijst te wijzigen.

int FindString(
    int nStartAfter,
    LPCTSTR lpszItem) const;

Parameterwaarden

nStartAfter
Bevat de op nul gebaseerde index van het item voordat het eerste item moet worden doorzocht. Wanneer de zoekopdracht de onderkant van de keuzelijst bereikt, gaat deze van boven aan de keuzelijst terug naar het item dat is opgegeven door nStartAfter. Als nStartAfter -1 is, wordt in de hele keuzelijst vanaf het begin gezocht.

lpszItem
Verwijst naar de door null beëindigde tekenreeks die het voorvoegsel bevat waarnaar moet worden gezocht. De zoekopdracht is onafhankelijk van hoofdletters, dus deze tekenreeks kan elke combinatie van hoofdletters en kleine letters bevatten.

Retourwaarde

De op nul gebaseerde index van het overeenkomende item of LB_ERR als de zoekopdracht is mislukt.

Opmerkingen

Gebruik de SelectString lidfunctie om een tekenreeks te zoeken en te selecteren.

Example

// 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

Hiermee zoekt u de eerste keuzelijsttekenreeks die overeenkomt met de tekenreeks die is opgegeven in lpszFind.

int FindStringExact(
    int nIndexStart,
    LPCTSTR lpszFind) const;

Parameterwaarden

nIndexStart
Hiermee geeft u de op nul gebaseerde index van het item op voordat het eerste item moet worden doorzocht. Wanneer de zoekopdracht de onderkant van de keuzelijst bereikt, gaat deze van boven aan de keuzelijst terug naar het item dat is opgegeven door nIndexStart. Als nIndexStart -1 is, wordt in de hele keuzelijst vanaf het begin gezocht.

lpszFind
Verwijst naar de tekenreeks die door null is beëindigd om naar te zoeken. Deze tekenreeks kan een volledige bestandsnaam bevatten, inclusief de extensie. De zoekopdracht is niet hoofdlettergevoelig, dus de tekenreeks kan elke combinatie van hoofdletters en kleine letters bevatten.

Retourwaarde

De index van het overeenkomende item of LB_ERR als de zoekopdracht is mislukt.

Opmerkingen

Als de keuzelijst is gemaakt met een tekenstijl van een eigenaar, maar zonder de LBS_HASSTRINGS stijl, probeert de FindStringExact lidfunctie de waarde van het dubbele woord te vergelijken met de waarde van lpszFind.

Example

// 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

Haalt de op nul gebaseerde index van het huidige ankeritem op in de keuzelijst.

int GetAnchorIndex() const;

Retourwaarde

De index van het huidige ankeritem, indien geslaagd; anders LB_ERR.

Opmerkingen

In een keuzelijst met meerdere keuzemogelijkheden is het ankeritem het eerste of laatste item in een blok met aaneengesloten geselecteerde items.

Example

Zie het voorbeeld voor CListBox::SetAnchorIndex.

CListBox::GetCaretIndex

Bepaalt de index van het item met de focusrechthoek in een keuzelijst met meerdere keuzemogelijkheden.

int GetCaretIndex() const;

Retourwaarde

De op nul gebaseerde index van het item met de focusrechthoek in een keuzelijst. Als de keuzelijst een keuzelijst met één keuzelijst is, is de retourwaarde de index van het geselecteerde item, indien van toepassing.

Opmerkingen

Het item kan al dan niet worden geselecteerd.

Example

Zie het voorbeeld voor CListBox::SetCaretIndex.

CListBox::GetCount

Hiermee wordt het aantal items in een keuzelijst opgehaald.

int GetCount() const;

Retourwaarde

Het aantal items in de keuzelijst of LB_ERR als er een fout optreedt.

Opmerkingen

Het geretourneerde aantal is één groter dan de indexwaarde van het laatste item (de index is gebaseerd op nul).

Example

// 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

Hiermee wordt de op nul gebaseerde index van het geselecteerde item opgehaald, indien van toepassing, in een keuzelijst met één keuzelijst.

int GetCurSel() const;

Retourwaarde

De op nul gebaseerde index van het geselecteerde item als het een keuzelijst met één selectie is. Dit is LB_ERR als er momenteel geen item is geselecteerd.

In een keuzelijst met meerdere keuzemogelijkheden is de index van het item met de focus.

Opmerkingen

Geen keuzelijst met meerdere keuzemogelijkheden aanroepen GetCurSel . Gebruik in plaats daarvan CListBox::GetSelItems.

Example

// 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

Hiermee haalt u de breedte in pixels op uit de keuzelijst waarmee deze horizontaal kan worden geschoven.

int GetHorizontalExtent() const;

Retourwaarde

De schuifbare breedte van de keuzelijst, in pixels.

Opmerkingen

Dit is alleen van toepassing als de keuzelijst een horizontale schuifbalk heeft.

Example

// 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

Hiermee haalt u de door de toepassing geleverde dubbele woordwaarde op die is gekoppeld aan het opgegeven keuzelijstitem.

DWORD_PTR GetItemData(int nIndex) const;

Parameterwaarden

nIndex
Hiermee geeft u de op nul gebaseerde index van het item in de keuzelijst op.

Retourwaarde

De waarde die is gekoppeld aan het item of LB_ERR als er een fout optreedt.

Opmerkingen

De waarde van het dubbele woord was de dwItemData parameter van een SetItemData aanroep.

Example

// 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

Haalt de 32-bits opgegeven 32-bits waarde op die is gekoppeld aan het opgegeven keuzelijstitem als een aanwijzer (void*).

void* GetItemDataPtr(int nIndex) const;

Parameterwaarden

nIndex
Hiermee geeft u de op nul gebaseerde index van het item in de keuzelijst op.

Retourwaarde

Hiermee haalt u een aanwijzer of -1 op als er een fout optreedt.

Example

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

Bepaalt de hoogte van items in een keuzelijst.

int GetItemHeight(int nIndex) const;

Parameterwaarden

nIndex
Hiermee geeft u de op nul gebaseerde index van het item in de keuzelijst op. Deze parameter wordt alleen gebruikt als de keuzelijst de LBS_OWNERDRAWVARIABLE stijl heeft. Anders moet deze worden ingesteld op 0.

Retourwaarde

De hoogte, in pixels, van de items in de keuzelijst. Als de keuzelijst de LBS_OWNERDRAWVARIABLE stijl heeft, is de retourwaarde de hoogte van het item dat is opgegeven door nIndex. Als er een fout optreedt, is LB_ERRde retourwaarde .

Example

// 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

Hiermee haalt u de afmetingen op van de rechthoek die een keuzelijstitem begrenst, omdat dit momenteel wordt weergegeven in het keuzelijstvenster.

int GetItemRect(
    int nIndex,
    LPRECT lpRect) const;

Parameterwaarden

nIndex
Hiermee geeft u de op nul gebaseerde index van het item op.

lpRect
Hiermee geeft u een lange aanwijzer naar een RECT structuur die de coördinaten van de keuzelijstclient van het item ontvangt.

Retourwaarde

LB_ERR als er een fout optreedt.

Example

// 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

Hiermee wordt het aantal items per kolom opgehaald.

DWORD GetListBoxInfo() const;

Retourwaarde

Aantal items per kolom van het CListBox object.

Opmerkingen

Met deze lidfunctie wordt de functionaliteit van het LB_GETLISTBOXINFO bericht geëmuleren, zoals beschreven in de Windows SDK.

CListBox::GetLocale

Hiermee wordt de landinstelling opgehaald die wordt gebruikt door de keuzelijst.

LCID GetLocale() const;

Retourwaarde

De LCID-waarde (Locale Identifier) voor de tekenreeksen in de keuzelijst.

Opmerkingen

De landinstelling wordt bijvoorbeeld gebruikt om de sorteervolgorde van de tekenreeksen in een gesorteerde keuzelijst te bepalen.

Example

Zie het voorbeeld voor CListBox::SetLocale.

CListBox::GetSel

Hiermee haalt u de selectiestatus van een item op.

int GetSel(int nIndex) const;

Parameterwaarden

nIndex
Hiermee geeft u de op nul gebaseerde index van het item op.

Retourwaarde

Een positief getal als het opgegeven item is geselecteerd; anders is het 0. De retourwaarde is LB_ERR als er een fout optreedt.

Opmerkingen

Deze lidfunctie werkt met keuzelijsten met één of meerdere keuzemogelijkheden.

Als u de index van het geselecteerde keuzelijstitem wilt ophalen, gebruikt CListBox::GetCurSelu .

Example

// 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

Hiermee wordt het totale aantal geselecteerde items in een keuzelijst met meerdere keuzemogelijkheden opgehaald.

int GetSelCount() const;

Retourwaarde

Het aantal geselecteerde items in een keuzelijst. Als de keuzelijst een keuzelijst met één keuzelijst is, is LB_ERRde retourwaarde .

Example

Zie het voorbeeld voor CListBox::GetSelItems.

CListBox::GetSelItems

Hiermee wordt een buffer gevuld met een matrix met gehele getallen waarmee de itemnummers van geselecteerde items in een keuzelijst met meerdere selecties worden opgegeven.

int GetSelItems(
    int nMaxItems,
    LPINT rgIndex) const;

Parameterwaarden

nMaxItems
Hiermee geeft u het maximum aantal geselecteerde items waarvan de itemnummers in de buffer moeten worden geplaatst.

rgIndex
Hiermee geeft u een aanwijzer naar een buffer groot genoeg voor het aantal gehele getallen dat is opgegeven door nMaxItems.

Retourwaarde

Het werkelijke aantal items dat in de buffer is geplaatst. Als de keuzelijst een keuzelijst met één keuzelijst is, is LB_ERRde retourwaarde .

Example

// 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

Hiermee haalt u een tekenreeks op uit een keuzelijst.

int GetText(
    int nIndex,
    LPTSTR lpszBuffer) const;

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

Parameterwaarden

nIndex
Hiermee geeft u de op nul gebaseerde index van de tekenreeks die moet worden opgehaald.

lpszBuffer
Verwijst naar de buffer die de tekenreeks ontvangt. De buffer moet voldoende ruimte hebben voor de tekenreeks en een afsluit null-teken. De grootte van de tekenreeks kan vooraf worden bepaald door de GetTextLen lidfunctie aan te roepen.

rString
Een verwijzing naar een CString object.

Retourwaarde

De lengte (in bytes) van de tekenreeks, met uitzondering van het afsluitende null-teken. Als nIndex er geen geldige index wordt opgegeven, is LB_ERRde retourwaarde .

Opmerkingen

De tweede vorm van deze lidfunctie vult een CString object met de tekenreekstekst.

Example

// 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

Hiermee haalt u de lengte van een tekenreeks in een keuzelijstitem op.

int GetTextLen(int nIndex) const;

Parameterwaarden

nIndex
Hiermee geeft u de op nul gebaseerde index van de tekenreeks.

Retourwaarde

De lengte van de tekenreeks in tekens, met uitzondering van het afsluitende null-teken. Als nIndex er geen geldige index wordt opgegeven, is LB_ERRde retourwaarde .

Example

Zie het voorbeeld voor CListBox::GetText.

CListBox::GetTopIndex

Haalt de op nul gebaseerde index van het eerste zichtbare item in een keuzelijst op.

int GetTopIndex() const;

Retourwaarde

De op nul gebaseerde index van het eerste zichtbare item in een keuzelijst, LB_ERR anders.

Opmerkingen

In eerste instantie bevindt item 0 zich boven aan de keuzelijst, maar als de keuzelijst wordt geschoven, bevindt een ander item zich mogelijk bovenaan.

Example

// 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

Hiermee wordt geheugen toegewezen voor het opslaan van keuzelijstitems.

int InitStorage(
    int nItems,
    UINT nBytes);

Parameterwaarden

nItems
Hiermee geeft u het aantal items op waarnaar de ruimte moet worden gereserveerd.

nBytes
Hiermee geeft u de hoeveelheid extra geheugen in bytes op die moet worden toegewezen voor itemtekenreeksen.

Retourwaarde

Als dit lukt, is het maximum aantal items dat in de keuzelijst kan worden opgeslagen voordat een herlocatie van het geheugen nodig is, anders LB_ERRSPACEbetekent dit dat er onvoldoende geheugen beschikbaar is.

Opmerkingen

U kunt deze functie aanroepen voordat u een groot aantal items toevoegt aan een CListBox.

Met deze functie kunt u de initialisatie van keuzelijsten met een groot aantal items versnellen (meer dan 100). De opgegeven hoeveelheid geheugen wordt vooraf toegewezen, zodat volgende AddString, InsertStringen Dir functies efficiënter zijn. U kunt schattingen voor de parameters gebruiken. Als u overschat, blijft het extra geheugen toegewezen; als u onderschat, wijst de keuzelijst indien nodig extra geheugen toe.

Het geheugen dat nodig is om een tekenreeks op te slaan, bevat de null-afsluiter. Als u dus van plan bent om 100 tekenreeksen toe te voegen, elk met een lengte van 10 tekens, geeft u een wParam van 100 en een lParam van 100 × (10 + 1) × grootte van (TCHAR).

Alleen Windows 95/98: de nItems parameter is beperkt tot 16-bits waarden. Dit betekent dat keuzelijsten niet meer dan 32.767 items mogen bevatten. Hoewel het aantal items beperkt is, wordt de totale grootte van de items in een keuzelijst alleen beperkt door het beschikbare geheugen.

Example

// Reserve space in the list box for 256 additional strings with
// about 15 characters per string.
int n = m_myListBox.InitStorage(256, 256 * (15 + 1) * 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

Hiermee voegt u een tekenreeks in de keuzelijst in.

int InsertString(
    int nIndex,
    LPCTSTR lpszItem);

Parameterwaarden

nIndex
Hiermee geeft u de op nul gebaseerde index van de positie om de tekenreeks in te voegen. Als deze parameter -1 is, wordt de tekenreeks toegevoegd aan het einde van de lijst.

lpszItem
Verwijst naar de door null beëindigde tekenreeks die moet worden ingevoegd.

Retourwaarde

De op nul gebaseerde index van de positie waarop de tekenreeks is ingevoegd. De retourwaarde is LB_ERR als er een fout optreedt. De retourwaarde is LB_ERRSPACE als er onvoldoende ruimte beschikbaar is om de nieuwe tekenreeks op te slaan.

Opmerkingen

In tegenstelling tot de AddString lidfunctie, InsertString wordt er geen lijst met de LBS_SORT stijl gesorteerd.

Example

// 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

Bepaalt het keuzelijstitem het dichtstbijzijnde punt dat is opgegeven in pt.

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

Parameterwaarden

pt
Punt waarvoor het dichtstbijzijnde item moet worden gevonden, opgegeven ten opzichte van de linkerbovenhoek van het clientgebied van de keuzelijst.

bOutside
Verwijzing naar een BOOL variabele die wordt ingesteld TRUE op of pt zich buiten het clientgebied van de keuzelijst bevindt, FALSE als pt deze zich in het clientgebied van de keuzelijst bevindt.

Retourwaarde

De index van het dichtstbijzijnde item tot het punt dat is opgegeven in pt.

Opmerkingen

U kunt deze functie gebruiken om te bepalen welk keuzelijstitem de muiscursor over beweegt.

Example

Zie het voorbeeld voor CListBox::SetAnchorIndex.

CListBox::MeasureItem

Aangeroepen door het framework wanneer een keuzelijst met een tekenstijl van eigenaar wordt gemaakt.

virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);

Parameterwaarden

lpMeasureItemStruct
Een lange aanwijzer naar een MEASUREITEMSTRUCT structuur.

Opmerkingen

Deze lidfunctie doet standaard niets. Overschrijf deze lidfunctie en vul de MEASUREITEMSTRUCT structuur in om Windows te informeren over de afmetingen van de keuzelijst. Als de keuzelijst met de LBS_OWNERDRAWVARIABLE stijl wordt gemaakt, roept het framework deze lidfunctie aan voor elk item in de keuzelijst. Anders wordt dit lid slechts één keer aangeroepen.

Zie de discussie in Technical Note 14 voor meer informatie over het gebruik van de LBS_OWNERDRAWFIXED stijl in een keuzelijst met eigenaartekening die is gemaakt met de SubclassDlgItem lidfunctie vanCWnd.

Zie CWnd::OnMeasureItem voor een beschrijving van de MEASUREITEMSTRUCT structuur.

Example

// 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

Hiermee verwijdert u alle items uit een keuzelijst.

void ResetContent();

Example

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

CListBox::SelectString

Zoekt naar een keuzelijstitem dat overeenkomt met de opgegeven tekenreeks en als er een overeenkomend item wordt gevonden, wordt het item geselecteerd.

int SelectString(
    int nStartAfter,
    LPCTSTR lpszItem);

Parameterwaarden

nStartAfter
Bevat de op nul gebaseerde index van het item voordat het eerste item moet worden doorzocht. Wanneer de zoekopdracht de onderkant van de keuzelijst bereikt, gaat deze van boven aan de keuzelijst terug naar het item dat is opgegeven door nStartAfter. Als nStartAfter -1 is, wordt in de hele keuzelijst vanaf het begin gezocht.

lpszItem
Verwijst naar de door null beëindigde tekenreeks die het voorvoegsel bevat waarnaar moet worden gezocht. De zoekopdracht is onafhankelijk van hoofdletters, dus deze tekenreeks kan elke combinatie van hoofdletters en kleine letters bevatten.

Retourwaarde

De index van het geselecteerde item als de zoekopdracht is geslaagd. Als de zoekopdracht is mislukt, is de retourwaarde en LB_ERR wordt de huidige selectie niet gewijzigd.

Opmerkingen

De keuzelijst wordt zo nodig geschoven om het geselecteerde item in beeld te brengen.

Deze lidfunctie kan niet worden gebruikt met een keuzelijst met de LBS_MULTIPLESEL stijl.

Een item wordt alleen geselecteerd als de oorspronkelijke tekens (vanaf het beginpunt) overeenkomen met de tekens in de tekenreeks die is opgegeven door lpszItem.

Gebruik de FindString lidfunctie om een tekenreeks te zoeken zonder het item te selecteren.

Example

// 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

Hiermee selecteert u meerdere opeenvolgende items in een keuzelijst met meerdere keuzemogelijkheden.

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

Parameterwaarden

bSelect
Hiermee geeft u op hoe u de selectie instelt. Als dat het isTRUE, wordt de tekenreeks geselecteerd en gemarkeerd. Als bSelectFALSEde markering wordt verwijderd en de tekenreeks niet meer is geselecteerd.

nFirstItem
Hiermee geeft u de op nul gebaseerde index van het eerste item dat moet worden ingesteld.

nLastItem
Hiermee geeft u de op nul gebaseerde index van het laatste item dat moet worden ingesteld.

Retourwaarde

LB_ERR als er een fout optreedt.

Opmerkingen

Gebruik deze lidfunctie alleen met keuzelijsten met meerdere keuzemogelijkheden. Als u slechts één item in een keuzelijst met meerdere keuzemogelijkheden moet selecteren , dat wil gezegd, als nFirstItem dit gelijk is aan , roept u in plaats daarvan de SetSel lidfunctie aan nLastItem .

Example

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

CListBox::SetAnchorIndex

Hiermee stelt u het anker in een keuzelijst met meerdere keuzemogelijkheden in om een uitgebreide selectie te starten.

void SetAnchorIndex(int nIndex);

Parameterwaarden

nIndex
Hiermee geeft u de op nul gebaseerde index op van het keuzelijstitem dat het anker wordt.

Opmerkingen

In een keuzelijst met meerdere keuzemogelijkheden is het ankeritem het eerste of laatste item in een blok met aaneengesloten geselecteerde items.

Example

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

Hiermee stelt u de focusrechthoek in op het item op de opgegeven index in een keuzelijst met meerdere keuzemogelijkheden.

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

Parameterwaarden

nIndex
Hiermee geeft u de op nul gebaseerde index van het item op om de focusrechthoek in de keuzelijst te ontvangen.

bScroll
Als deze waarde 0 is, wordt het item geschoven totdat het volledig zichtbaar is. Als deze waarde niet 0 is, wordt het item geschoven totdat het ten minste gedeeltelijk zichtbaar is.

Retourwaarde

LB_ERR als er een fout optreedt.

Opmerkingen

Als het item niet zichtbaar is, wordt het weergegeven.

Example

// 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

Hiermee stelt u de breedte in pixels van alle kolommen in een keuzelijst met meerdere kolommen in (gemaakt met de LBS_MULTICOLUMN stijl).

void SetColumnWidth(int cxWidth);

Parameterwaarden

cxWidth
Hiermee geeft u de breedte in pixels van alle kolommen.

Example

// 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

Selecteert een tekenreeks en schuift deze naar de weergave, indien nodig.

int SetCurSel(int nSelect);

Parameterwaarden

nSelect
Hiermee geeft u de op nul gebaseerde index van de tekenreeks die moet worden geselecteerd. Als nSelect -1 is, is de keuzelijst ingesteld op geen selectie.

Retourwaarde

LB_ERR als er een fout optreedt.

Opmerkingen

Wanneer de nieuwe tekenreeks is geselecteerd, wordt in de keuzelijst de markering verwijderd uit de eerder geselecteerde tekenreeks.

Gebruik deze lidfunctie alleen met keuzelijsten met één keuzelijst.

Als u een selectie in een keuzelijst met meerdere keuzemogelijkheden wilt instellen of verwijderen, gebruikt CListBox::SetSelu .

Example

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

CListBox::SetHorizontalExtent

Hiermee stelt u de breedte in pixels in waarmee een keuzelijst horizontaal kan worden geschoven.

void SetHorizontalExtent(int cxExtent);

Parameterwaarden

cxExtent
Hiermee geeft u het aantal pixels op waarmee de keuzelijst horizontaal kan worden geschoven.

Opmerkingen

Als de grootte van de keuzelijst kleiner is dan deze waarde, schuift de horizontale schuifbalk horizontaal door items in de keuzelijst. Als de keuzelijst net zo groot of groter is dan deze waarde, is de horizontale schuifbalk verborgen.

Als u wilt reageren op een oproep SetHorizontalExtent, moet de keuzelijst zijn gedefinieerd met de WS_HSCROLL stijl.

Deze lidfunctie is niet handig voor keuzelijsten met meerdere kolommen. Voor keuzelijsten met meerdere kolommen roept u de SetColumnWidth lidfunctie aan.

Example

// 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

Hiermee stelt u een waarde in die is gekoppeld aan het opgegeven item in een keuzelijst.

int SetItemData(
    int nIndex,
    DWORD_PTR dwItemData);

Parameterwaarden

nIndex
Hiermee geeft u de op nul gebaseerde index van het item op.

dwItemData
Hiermee geeft u de waarde die aan het item moet worden gekoppeld.

Retourwaarde

LB_ERR als er een fout optreedt.

Example

// 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

Hiermee stelt u de 32-bits waarde in die is gekoppeld aan het opgegeven item in een keuzelijst als de opgegeven aanwijzer ( void*).

int SetItemDataPtr(
    int nIndex,
    void* pData);

Parameterwaarden

nIndex
Hiermee geeft u de op nul gebaseerde index van het item op.

pData
Hiermee geeft u de aanwijzer die aan het item moet worden gekoppeld.

Retourwaarde

LB_ERR als er een fout optreedt.

Opmerkingen

Deze aanwijzer blijft geldig voor de levensduur van de keuzelijst, ook al kan de relatieve positie van het item in de keuzelijst veranderen wanneer items worden toegevoegd of verwijderd. De index van het item in het vak kan daarom worden gewijzigd, maar de aanwijzer blijft betrouwbaar.

Example

// 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

Hiermee stelt u de hoogte van items in een keuzelijst in.

int SetItemHeight(
    int nIndex,
    UINT cyItemHeight);

Parameterwaarden

nIndex
Hiermee geeft u de op nul gebaseerde index van het item in de keuzelijst op. Deze parameter wordt alleen gebruikt als de keuzelijst de LBS_OWNERDRAWVARIABLE stijl heeft. Anders moet deze worden ingesteld op 0.

cyItemHeight
Hiermee geeft u de hoogte, in pixels, van het item.

Retourwaarde

LB_ERR als de index of hoogte ongeldig is.

Opmerkingen

Als de keuzelijst de LBS_OWNERDRAWVARIABLE stijl heeft, wordt met deze functie de hoogte van het item ingesteld dat is opgegeven door nIndex. Anders stelt deze functie de hoogte van alle items in de keuzelijst in.

Example

// 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

Hiermee stelt u de landinstellingen-id voor deze keuzelijst in.

LCID SetLocale(LCID nNewLocale);

Parameterwaarden

nNewLocale
De nieuwe LCID-waarde (locale identifier) die moet worden ingesteld voor de keuzelijst.

Retourwaarde

De vorige LCID-waarde (Locale Identifier) voor deze keuzelijst.

Opmerkingen

Als SetLocale dit niet wordt aangeroepen, wordt de standaardlandinstelling verkregen van het systeem. Deze standaardinstelling van het systeem kan worden gewijzigd met behulp van de landinstelling van het Configuratiescherm (of internationaal).

Example

// My LCID to use.
LCID mylcid = MAKELCID(MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MEXICAN),
                       SORT_DEFAULT);

// Force the list box to use my locale.
m_myListBox.SetLocale(mylcid);
ASSERT(m_myListBox.GetLocale() == mylcid);

CListBox::SetSel

Hiermee selecteert u een tekenreeks in een keuzelijst met meerdere keuzemogelijkheden.

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

Parameterwaarden

nIndex
Bevat de op nul gebaseerde index van de tekenreeks die moet worden ingesteld. Als -1, wordt de selectie toegevoegd aan of verwijderd uit alle tekenreeksen, afhankelijk van de waarde van bSelect.

bSelect
Hiermee geeft u op hoe u de selectie instelt. Als dat het isTRUE, wordt de tekenreeks geselecteerd en gemarkeerd. Als bSelectFALSEde markering wordt verwijderd en de tekenreeks niet meer is geselecteerd. De opgegeven tekenreeks is geselecteerd en standaard gemarkeerd.

Retourwaarde

LB_ERR als er een fout optreedt.

Opmerkingen

Gebruik deze lidfunctie alleen met keuzelijsten met meerdere keuzemogelijkheden.

Als u een item in een keuzelijst met één keuzelijst wilt selecteren, gebruikt CListBox::SetCurSelu .

Example

// 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

Hiermee stelt u de tabstopposities in een keuzelijst in.

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

BOOL SetTabStops(
    int nTabStops,
    LPINT rgTabStops);

Parameterwaarden

cxEachStop
Tabstops worden ingesteld bij alle cxEachStop dialoogvensters. Zie rgTabStops voor een beschrijving van een dialoogvenster.

nTabStops
Hiermee geeft u het aantal tabstops in de keuzelijst op.

rgTabStops
Verwijst naar het eerste lid van een matrix met gehele getallen met de tabstopposities in dialoogvensters. Een dialoogvenstereenheid is een horizontale of verticale afstand. Eén horizontale dialoogvenstereenheid is gelijk aan een vierde van de huidige eenheid voor de basisbreedte van het dialoogvenster en één verticale dialoogvenstereenheid is gelijk aan één achtste van de huidige basishoogteeenheid van het dialoogvenster. De dialoogvensterbasiseenheden worden berekend op basis van de hoogte en breedte van het huidige systeemlettertype. De GetDialogBaseUnits Windows-functie retourneert de huidige dialoogvensterbasiseenheden in pixels. De tabstops moeten in oplopende volgorde worden gesorteerd; Back-tabs zijn niet toegestaan.

Retourwaarde

Niet-nul als alle tabbladen zijn ingesteld; anders 0.

Opmerkingen

Als u tabstops wilt instellen op de standaardgrootte van 2 dialoogvensters, roept u de parameterloze versie van deze lidfunctie aan. Als u tabstops wilt instellen op een andere grootte dan 2, roept u de versie aan met het cxEachStop argument.

Als u tabstops wilt instellen op een matrix met grootten, gebruikt u de versie met de rgTabStops en nTabStops argumenten. Er wordt een tabstop ingesteld voor elke waarde in rgTabStops, tot het getal dat is opgegeven door nTabStops.

Als u wilt reageren op een aanroep van de SetTabStops lidfunctie, moet de keuzelijst zijn gemaakt met de LBS_USETABSTOPS stijl.

Example

// 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

Zorgt ervoor dat een bepaald keuzelijstitem zichtbaar is.

int SetTopIndex(int nIndex);

Parameterwaarden

nIndex
Hiermee geeft u de op nul gebaseerde index van het keuzelijstitem.

Retourwaarde

Nul als dit lukt of LB_ERR als er een fout optreedt.

Opmerkingen

Het systeem schuift de keuzelijst totdat het item dat is nIndex opgegeven boven aan de keuzelijst wordt weergegeven of het maximale schuifbereik is bereikt.

Example

// Set the first visible item in the list box to be the middle item
m_myListBox.SetTopIndex(m_myListBox.GetCount() / 2);

CListBox::VKeyToItem

Aangeroepen door het framework wanneer het bovenliggende venster van de keuzelijst een WM_VKEYTOITEM bericht van de keuzelijst ontvangt.

virtual int VKeyToItem(
    UINT nKey,
    UINT nIndex);

Parameterwaarden

nKey
De code van de virtuele sleutel van de sleutel die de gebruiker heeft ingedrukt. Zie voor een lijst met standaard virtuele-sleutelcodes Winuser.h

nIndex
De huidige positie van de keuzelijstbezorger.

Retourwaarde

Retourneert - 2 voor geen verdere actie, - 1 voor standaardactie of een niet-negatief getal om een index van een keuzelijstitem op te geven waarop de standaardactie voor de toetsaanslag moet worden uitgevoerd.

Opmerkingen

Het WM_VKEYTOITEM bericht wordt verzonden door de keuzelijst wanneer het een WM_KEYDOWN bericht ontvangt, maar alleen als het keuzelijstje aan beide van de volgende voldoet:

U moet deze functie nooit zelf aanroepen. Overschrijf deze functie om uw eigen aangepaste verwerking van toetsenbordberichten te bieden.

U moet een waarde retourneren om het framework te vertellen welke actie uw onderdrukking heeft uitgevoerd. Een retourwaarde van - 2 geeft aan dat de toepassing alle aspecten van het selecteren van het item heeft verwerkt en geen verdere actie door de keuzelijst vereist. Voordat u terugkeert - 2, kunt u de selectie instellen of de caret of beide verplaatsen. Als u de selectie wilt instellen, gebruikt SetCurSel u of SetSel. Als u de caret wilt verplaatsen, gebruikt u SetCaretIndex.

Een retourwaarde van - 1 geeft aan dat de keuzelijst de standaardactie moet uitvoeren als reactie op de toetsaanslag. De standaard implementatie retourneert - 1.

Een retourwaarde van 0 of hoger geeft de index van een item in de keuzelijst aan en geeft aan dat de keuzelijst de standaardactie moet uitvoeren voor de toetsaanslag op het opgegeven item.

Example

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

Zie ook

MFC-voorbeeld CTRLTEST
CWnd klasse
Hiërarchiediagram
CWnd klasse
CButton klasse
CComboBox klasse
CEdit klasse
CScrollBar klasse
CStatic klasse