Megosztás a következőn keresztül:


CListBox osztály

Megjegyzés:

A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

A Windows-listamező funkcióit biztosítja.

Szemantika

class CListBox : public CWnd

Members

Nyilvános konstruktorok

Név Description
CListBox::CListBox Objektumot CListBox hoz létre.

Nyilvános metódusok

Név Description
CListBox::AddString Sztringet ad hozzá egy listamezőhöz.
CListBox::CharToItem Felülbírálás a sztringekkel nem rendelkező tulajdonos-rajz listamezők egyéni WM_CHAR kezelésének biztosításához.
CListBox::CompareItem A keretrendszer meghívta egy új elem pozíciójának meghatározására egy rendezett tulajdonos-rajz listamezőben.
CListBox::Create Létrehozza a Windows listamezőt, és csatolja az CListBox objektumhoz.
CListBox::DeleteItem A keretrendszer meghívja, amikor a felhasználó töröl egy elemet egy tulajdonos-rajz listamezőből.
CListBox::DeleteString Sztring törlése egy listamezőből.
CListBox::Dir Fájlneveket, meghajtókat vagy mindkettőt ad hozzá az aktuális könyvtárból egy listamezőhöz.
CListBox::DrawItem A keretrendszer meghívja, amikor megváltozik egy tulajdonos-rajz lista mezőjének vizuális aspektusa.
CListBox::FindString Egy listamezőben keres egy sztringet.
CListBox::FindStringExact Megkeresi a megadott sztringnek megfelelő első listamező-sztringet.
CListBox::GetAnchorIndex Lekéri az aktuális horgonyelem nullaalapú indexét egy listamezőben.
CListBox::GetCaretIndex Meghatározza annak az elemnek az indexét, amelynek a fókusz téglalapja egy többszörös kijelölésű listamezőben van.
CListBox::GetCount A listamezőben lévő sztringek számát adja vissza.
CListBox::GetCurSel A listamezőben jelenleg kijelölt sztring nulla alapú indexét adja vissza.
CListBox::GetHorizontalExtent Azt a képpontszélességű szélességet adja vissza, amelyet egy listadoboz vízszintesen görgethet.
CListBox::GetItemData A listaelemhez társított értéket adja vissza.
CListBox::GetItemDataPtr Egy listaelemre mutató mutatót ad vissza.
CListBox::GetItemHeight Meghatározza a listaelemek magasságát.
CListBox::GetItemRect A listaelem határoló téglalapját adja vissza, ahogy az jelenleg látható.
CListBox::GetListBoxInfo Lekéri az oszloponkénti elemek számát.
CListBox::GetLocale Egy listamező területi azonosítójának lekérése.
CListBox::GetSel Egy listaelem kijelölési állapotát adja vissza.
CListBox::GetSelCount A többszörös kijelölésű listamezőben jelenleg kijelölt sztringek számát adja vissza.
CListBox::GetSelItems A listamezőben jelenleg kijelölt sztringek indexeit adja vissza.
CListBox::GetText Listaelem másolása pufferbe.
CListBox::GetTextLen Egy listaelem bájtban megadott hosszát adja vissza.
CListBox::GetTopIndex A listamező első látható sztringjének indexét adja vissza.
CListBox::InitStorage Előre áthelyezi a listaelemek és sztringek memóriablokkjait.
CListBox::InsertString Sztring beszúrása egy adott helyre egy listamezőben.
CListBox::ItemFromPoint Egy ponthoz legközelebbi listaelem indexét adja vissza.
CListBox::MeasureItem A keretrendszer meghívja, amikor létrejön egy tulajdonos-rajz listamező a listamező dimenzióinak meghatározásához.
CListBox::ResetContent Törli az összes bejegyzést egy listamezőből.
CListBox::SelectString Egy sztringet keres és jelöl ki egy kijelölési listában.
CListBox::SelItemRange Sztringtartomány kijelölése vagy jelölésének törlése egy többszörös kijelölésű listamezőben.
CListBox::SetAnchorIndex Ha a horgonyt egy többszörös kijelölési listamezőben állítja be, azzal megkezdheti a bővített kijelölést.
CListBox::SetCaretIndex A fókusz téglalapot a megadott index elemére állítja be egy többszörös kijelölési listamezőben.
CListBox::SetColumnWidth Többoszlopos listamező oszlopszélessége.
CListBox::SetCurSel Kiválaszt egy listamező-sztringet.
CListBox::SetHorizontalExtent A listamező vízszintesen görgethető szélességét képpontban állítja be.
CListBox::SetItemData Beállítja a listaelemhez társított értéket.
CListBox::SetItemDataPtr A listaelemre mutató mutatót állít be.
CListBox::SetItemHeight A listamező elemeinek magasságát állítja be.
CListBox::SetLocale Egy listamező területi azonosítójának beállítása.
CListBox::SetSel Kijelöl vagy töröl egy listaelemet egy többszörös kijelölésű listamezőben.
CListBox::SetTabStops A tabulátorpozíciók beállítása egy listamezőben.
CListBox::SetTopIndex Beállítja a listamező első látható sztringjének nullaalapú indexét.
CListBox::VKeyToItem Felülbírálás a stíluskészlettel rendelkező listamezők egyéni WM_KEYDOWN kezelésének LBS_WANTKEYBOARDINPUT biztosításához.

Megjegyzések

A listamezők olyan elemek listáját jelenítik meg, mint például a fájlnevek, amelyeket a felhasználó megtekinthet és kiválaszthat.

Egy kijelölési listában a felhasználó csak egy elemet jelölhet ki. Több kijelölési lista listában kijelölhet egy elemtartományt. Amikor a felhasználó kijelöl egy elemet, az ki lesz emelve, és a listamező értesítést küld a szülőablaknak.

Listamezőt párbeszédpanelsablonból vagy közvetlenül a kódból is létrehozhat. Ha közvetlenül szeretné létrehozni, hozza létre az CListBox objektumot, majd hívja meg a Create tagfüggvényt a Windows listamező vezérlőelem létrehozásához és az CListBox objektumhoz való csatolásához. Ha listamezőt szeretne használni egy párbeszédpanelsablonban, deklaráljon egy listamezőváltozót a párbeszédpanel-osztályban, majd használja DDX_Control a párbeszédpanel-osztály függvényében DoDataExchange a tagváltozót a vezérlőhöz való csatlakoztatásához. (ez automatikusan megtörténik, ha vezérlőváltozót ad hozzá a párbeszédpanel-osztályhoz.)

Az építés egy egylépéses folyamat lehet egy osztályban, amely a következőből CListBoxszármazik: . Írjon konstruktort a származtatott osztályhoz, és hívja meg Create a konstruktoron belülről.

Ha egy listamező által a szülőnek küldött Windows-értesítési üzeneteket szeretné kezelni (általában egy osztályból CDialogszármazik), adjon hozzá egy üzenettérkép-bejegyzést és egy üzenetkezelő tagfüggvényt a szülőosztályhoz minden egyes üzenethez.

Minden üzenettérkép-bejegyzés a következő formában történik:

ON_Notification( id, memberFxn )

ahol id megadja az értesítést küldő listamező vezérlőelem gyermekablak-azonosítóját, és memberFxn az értesítés kezeléséhez írt szülőtagfüggvény neve.

A szülő függvény prototípusa a következő:

afx_msg void memberFxn( );

Az alábbiakban felsoroljuk a lehetséges üzenettérkép-bejegyzéseket, valamint azoknak az eseteknek a leírását, amelyekben a rendszer elküldi őket a szülőnek:

  • ON_LBN_DBLCLK A felhasználó duplán kattint egy sztringre egy listamezőben. Ezt az értesítési üzenetet csak a stílussal LBS_NOTIFY rendelkező listamező küldi el.

  • ON_LBN_ERRSPACE A listamező nem tud elegendő memóriát lefoglalni a kérés teljesítéséhez.

  • ON_LBN_KILLFOCUS A listamező elveszíti a bemeneti fókuszt.

  • ON_LBN_SELCANCEL Az aktuális listakijelölés megszakadt. Ezt az üzenetet csak akkor küldi el a rendszer, ha egy listamező stílussal rendelkezik LBS_NOTIFY .

  • ON_LBN_SELCHANGE A lista kijelölése megváltozott. Ez az értesítés nem lesz elküldve, ha a tagfüggvény módosítja a kijelölést CListBox::SetCurSel . Ez az értesítés csak a stílussal rendelkező LBS_NOTIFY listamezőkre vonatkozik. A LBN_SELCHANGE rendszer akkor is elküldi az értesítési üzenetet egy többszörös kijelölésű listamezőhöz, amikor a felhasználó lenyom egy nyílbillentyűt, még akkor is, ha a kijelölés nem változik.

  • ON_LBN_SETFOCUS A listamező a bemeneti fókuszt kapja.

  • ON_WM_CHARTOITEM A sztringeket nem tartalmazó tulajdonosi rajzok listája üzenetben WM_CHAR érkezik.

  • ON_WM_VKEYTOITEM A stílust tartalmazó LBS_WANTKEYBOARDINPUT lista egy üzenetet kap WM_KEYDOWN .

Ha egy párbeszédpanelen (egy párbeszédpanel-erőforráson keresztül) hoz létre CListBox objektumot, a rendszer automatikusan megsemmisíti az CListBox objektumot, amikor a felhasználó bezárja a párbeszédpanelt.

Ha objektumot hoz létre egy CListBox ablakban, előfordulhat, hogy el kell pusztítania az CListBox objektumot. Ha létrehozza az CListBox objektumot a veremen, az automatikusan megsemmisül. Ha a függvény használatával hozza létre az CListBox objektumot a new halomon, a szülőablak bezárásakor meg kell hívnia delete az objektumot, hogy semmisítse meg.

Ha bármilyen memóriát lefoglal az CListBox objektumban, felülbírálja a CListBox destruktort a foglalás törléséhez.

Öröklési hierarchia

CObject

CCmdTarget

CWnd

CListBox

Requirements

Fejléc:afxwin.h

CListBox::AddString

Sztringet ad hozzá egy listamezőhöz.

int AddString(LPCTSTR lpszItem);

Paraméterek

lpszItem
A hozzáadni kívánt null értékű sztringre mutat.

Visszaadott érték

A listamező sztringjének nulla alapú indexe. A visszatérési érték az, LB_ERR ha hiba történik; a visszatérési érték az, LB_ERRSPACE ha nincs elegendő hely az új sztring tárolásához.

Megjegyzések

Ha a listamező nem a LBS_SORT stílussal lett létrehozva, a sztring a lista végére kerül. Ellenkező esetben a sztring be lesz szúrva a listába, és a lista rendezve lesz. Ha a listamező a LBS_SORT stílussal lett létrehozva, de nem a LBS_HASSTRINGS stílussal, a keretrendszer a tagfüggvény egy vagy több hívása alapján rendezi a CompareItem listát.

Sztring InsertString beszúrása egy adott helyre a listamezőben.

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

A keretrendszer meghívja, amikor a listamező szülőablaka üzenetet kap WM_CHARTOITEM a listamezőből.

virtual int CharToItem(
    UINT nKey,
    UINT nIndex);

Paraméterek

nKey
A felhasználó által beírt karakter ANSI-kódja.

nIndex
A listadoboz-ápoló aktuális pozíciója.

Visszaadott érték

Az - 1 vagy - 2 értéket adja vissza, ha nincs további művelet, vagy nem nem megfelelő számot ad meg egy listaelem indexének megadásához, amelyen az alapértelmezett műveletet hajtja végre a billentyűleütéshez. Az alapértelmezett implementáció eredménye – 1.

Megjegyzések

Az WM_CHARTOITEM üzenetet a listamező küldi el, amikor üzenetet kap WM_CHAR , de csak akkor, ha a listamező megfelel az összes feltételnek:

  • Egy tulajdonos-rajz lista mező.

  • Nincs megadva a LBS_HASSTRINGS stíluskészlet.

  • Legalább egy elemből áll.

Ezt a függvényt soha ne nevezd magadnak. Bírálja felül ezt a függvényt, hogy saját egyénileg kezelje a billentyűzetüzeneteket.

A felülbírálás során egy értéket kell visszaadnia, amelyből megtudhatja a keretrendszernek, hogy milyen műveletet hajtott végre. Az - 1 vagy - 2 visszatérési érték azt jelzi, hogy ön kezelte az elem kiválasztásának minden aspektusát, és nem igényel további műveletet a listamezőben. Az - 1 vagy - 2 visszatérés előtt beállíthatja a kijelölést, vagy áthelyezheti a gondozót vagy mindkettőt. A kijelölés beállításához használja SetCurSel vagy SetSel. A gondviselet áthelyezéséhez használja SetCaretIndexa következőt: .

A 0 vagy annál nagyobb visszatérési érték megadja a listamező egyik elemének indexét, és azt jelzi, hogy a listamezőnek az adott elem billentyűleütéséhez az alapértelmezett műveletet kell végrehajtania.

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

Objektumot CListBox hoz létre.

CListBox();

Megjegyzések

Egy objektumot CListBox két lépésben hozhat létre. Először hívja meg a konstruktort ClistBox , majd hívja meg Create, amely inicializálja a Windows listamezőt, és csatolja azt a CListBox.

Example

// Declare a local CListBox object.
CListBox myListBox;

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

CListBox::CompareItem

A keretrendszer meghívta egy új elem relatív pozíciójának meghatározására egy rendezett tulajdonos-rajz listamezőben.

virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);

Paraméterek

lpCompareItemStruct
Hosszú mutató egy COMPAREITEMSTRUCT szerkezetre.

Visszaadott érték

A szerkezetben leírt két elem relatív pozícióját COMPAREITEMSTRUCT jelzi. Az alábbi értékek bármelyike lehet:

Érték Meaning
-1 Az 1. elem rendezi a 2. elemet.
0 Az 1. és a 2. elem ugyanúgy rendezi a elemet.
1 Az 1. elem a 2. elem után rendez.

Tekintse meg CWnd::OnCompareItem a COMPAREITEMSTRUCT szerkezet leírását.

Megjegyzések

Alapértelmezés szerint ez a tagfüggvény nem tesz semmit. Ha létrehoz egy tulajdonos-rajz listamezőt a stílussal, felül kell bírálnia ezt a LBS_SORT tagfüggvényt, hogy segítse a keretrendszert a listamezőhöz hozzáadott új elemek rendezésében.

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

Létrehozza a Windows listamezőt, és csatolja az CListBox objektumhoz.

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

Paraméterek

dwStyle
A listamező stílusát adja meg. Listastílusok bármilyen kombinációját alkalmazhatja a dobozra.

rect
Megadja a lista méretét és pozícióját. CRect Lehet objektum vagy RECT struktúra.

pParentWnd
Megadja a listamező szülőablakát (általában egy objektumot CDialog ). Nem lehet NULL.

nID
A listamező vezérlőazonosítóját adja meg.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

Egy objektumot CListBox két lépésben hozhat létre. Először hívja meg a konstruktort, majd hívja meg Create, amely inicializálja a Windows listamezőt, és csatolja az CListBox objektumhoz.

A végrehajtáskor Create a Windows elküldi a WM_NCCREATE, WM_CREATE, WM_NCCALCSIZEés WM_GETMINMAXINFO az üzeneteket a listavezérlőnek.

Ezeket az üzeneteket alapértelmezés szerint az OnNcCreatealaposztály , OnCreate, OnNcCalcSizeés OnGetMinMaxInfo tagfüggvényei CWnd kezelik. Az alapértelmezett üzenetkezelés kibővítéséhez származtassunk egy osztályt CListBox, adjunk hozzá egy üzenettérképet az új osztályhoz, és felülbíráljuk az előző üzenetkezelő tagfüggvényeket. Felülbírálhatja OnCreatepéldául egy új osztály szükséges inicializálását.

Alkalmazza a következő ablakstílusokat egy listamező vezérlőelemre.

  • WS_CHILD Mindig

  • WS_VISIBLE Általában

  • WS_DISABLED Ritkán

  • WS_VSCROLL Függőleges görgetősáv hozzáadása

  • WS_HSCROLL Vízszintes görgetősáv hozzáadása

  • WS_GROUP Vezérlőelemek csoportosítása

  • WS_TABSTOP A vezérlőelemhez való lapozás engedélyezése

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

A keretrendszer meghívja, amikor a felhasználó töröl egy elemet egy tulajdonos-rajz CListBox objektumból, vagy megsemmisíti a listamezőt.

virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);

Paraméterek

lpDeleteItemStruct
Hosszú mutató egy Windows-struktúra DELETEITEMSTRUCT felé, amely a törölt elem adatait tartalmazza.

Megjegyzések

A függvény alapértelmezett implementációja nem végez semmit. Felülbírálhatja ezt a függvényt, ha szükség szerint újrarajzol egy tulajdonosi listamezőt.

Tekintse meg CWnd::OnDeleteItem a DELETEITEMSTRUCT szerkezet leírását.

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

Törli a listamezőből a pozícióban nIndex lévő elemet.

int DeleteString(UINT nIndex);

Paraméterek

nIndex
A törölni kívánt sztring nulla alapú indexét adja meg.

Visszaadott érték

A listában fennmaradó sztringek száma. A visszatérési érték az, LB_ERR ha nIndex a lista elemeinek számánál nagyobb indexet ad meg.

Megjegyzések

Az alábbi nIndex elemek mostantól egy pozícióval lejjebb lépnek. Ha például egy listamező két elemet tartalmaz, az első elem törlése miatt a fennmaradó elem most az első helyen lesz. nIndex=0 az első pozícióban lévő elemhez.

Example

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

CListBox::Dir

Fájlnevek, meghajtók vagy mindkettő listáját adja hozzá a listamezőhöz.

int Dir(
    UINT attr,
    LPCTSTR lpszWildCard);

Paraméterek

attr
Az alábbi értékek enumbármely kombinációjaCFile::GetStatus, vagy a következő értékek bármely kombinációja lehet:

Érték Meaning
0x0000 A fájl olvasható vagy írható.
0x0001 A fájl olvasható, de nem írható bele.
0x0002 A fájl rejtett, és nem jelenik meg a címtárlistában.
0x0004 A fájl egy rendszerfájl.
0x0010 A megadott lpszWildCard név egy könyvtárat ad meg.
0x0020 A fájl archiválva lett.
0x4000 Adja meg az összes olyan meghajtót, amely megfelel a megadott névnek lpszWildCard.
0x8000 Exkluzív zászló. Ha a kizárólagos jelző be van állítva, csak a megadott típusú fájlok jelennek meg a listában. Ellenkező esetben a megadott típusú fájlok a "normál" fájlok mellett jelennek meg.

lpszWildCard
Egy fájlspecifikációs sztringre mutat. A sztring tartalmazhat helyettesítő karaktereket (például *.*).

Visszaadott érték

A listához hozzáadott utolsó fájlnév nullaalapú indexe. A visszatérési érték az, LB_ERR ha hiba történik; a visszatérési érték az, LB_ERRSPACE ha nincs elegendő hely az új sztringek tárolásához.

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

A keretrendszer meghívja, amikor megváltozik egy tulajdonos-rajz lista mezőjének vizuális aspektusa.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Paraméterek

lpDrawItemStruct
Hosszú mutató egy DRAWITEMSTRUCT olyan struktúrára, amely a szükséges rajztípussal kapcsolatos információkat tartalmazza.

Megjegyzések

A itemAction struktúra tagjai határozzák itemStateDRAWITEMSTRUCT meg a végrehajtandó rajzműveletet.

Alapértelmezés szerint ez a tagfüggvény nem tesz semmit. A tagfüggvény felülbírálása egy tulajdonosi rajzobjektum CListBox rajzának implementálásához. Az alkalmazásnak vissza kell állítania az összes grafikus eszközillesztő (GDI) objektumot, amely a tagfüggvény leállása előtt megadott megjelenítési környezethez lpDrawItemStruct van kiválasztva.

Tekintse meg CWnd::OnDrawItem a DRAWITEMSTRUCT szerkezet leírását.

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

Megkeresi a megadott előtagot tartalmazó listamező első sztringét anélkül, hogy módosítaná a listamező kijelölését.

int FindString(
    int nStartAfter,
    LPCTSTR lpszItem) const;

Paraméterek

nStartAfter
Az elem nulla alapú indexét tartalmazza az első keresendő elem előtt. Amikor a keresés eléri a listamező alját, a listamező tetejétől a megadott nStartAfterelemig folytatódik. Ha nStartAfter -1, a teljes listamező az elejétől kezdve keresve lesz.

lpszItem
A keresendő előtagot tartalmazó null értékű sztringre mutat. A keresés a kis- és nagybetűk függetlenek, ezért ez a sztring tartalmazhat nagybetűk és kisbetűk tetszőleges kombinációját.

Visszaadott érték

Az egyező elem nulla alapú indexe, vagy LB_ERR ha a keresés sikertelen volt.

Megjegyzések

SelectString A tagfüggvény használatával megkereshet és kijelölhet egy sztringet.

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

Megkeresi az első listamező sztringet, amely megfelel a megadott sztringnek lpszFind.

int FindStringExact(
    int nIndexStart,
    LPCTSTR lpszFind) const;

Paraméterek

nIndexStart
Az elem nulla alapú indexét adja meg az első keresendő elem előtt. Amikor a keresés eléri a listamező alját, a listamező tetejétől a megadott nIndexStartelemig folytatódik. Ha nIndexStart -1, a teljes listamező az elejétől kezdve keresve lesz.

lpszFind
A kereséshez a null értékű sztringre mutat. Ez a sztring teljes fájlnevet tartalmazhat, beleértve a bővítményt is. A keresés nem megkülönbözteti a kis- és nagybetűket, ezért a sztring tartalmazhat nagybetűk és kisbetűk bármilyen kombinációját.

Visszaadott érték

Az egyező elem indexe, vagy LB_ERR ha a keresés sikertelen volt.

Megjegyzések

Ha a listamező tulajdonos-rajz stílussal lett létrehozva, de a LBS_HASSTRINGS stílus nélkül, a FindStringExact tagfüggvény megpróbálja a duplaszó értékét az értékével lpszFindegyezni.

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

A listamező aktuális horgonyelemének nullaalapú indexét kéri le.

int GetAnchorIndex() const;

Visszaadott érték

Az aktuális horgonyelem indexe, ha sikeres; egyéb esetben LB_ERR.

Megjegyzések

Több kijelölésű listamezőben a horgonyelem az egybefüggő kijelölt elemek blokkjának első vagy utolsó eleme.

Example

Lásd a példát.CListBox::SetAnchorIndex

CListBox::GetCaretIndex

Meghatározza annak az elemnek az indexét, amelynek a fókusz téglalapja egy többszörös kijelölésű listamezőben van.

int GetCaretIndex() const;

Visszaadott érték

Annak az elemnek a nullaalapú indexe, amelynek a fókusz téglalapja egy listamezőben található. Ha a listamező egy kijelölési lista, a visszatérési érték a kijelölt elem indexe, ha van ilyen.

Megjegyzések

Előfordulhat, hogy az elem ki van jelölve.

Example

Lásd a példát.CListBox::SetCaretIndex

CListBox::GetCount

A listamező elemeinek számát kéri le.

int GetCount() const;

Visszaadott érték

A listamező elemeinek száma, vagy LB_ERR hiba esetén.

Megjegyzések

A visszaadott szám egy nagyobb, mint az utolsó elem indexértéke (az index nulla alapú).

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

Lekéri az aktuálisan kijelölt elem nullaalapú indexét( ha van ilyen), egy kijelölési listamezőben.

int GetCurSel() const;

Visszaadott érték

Az aktuálisan kijelölt elem nulla alapú indexe, ha egy kijelölési listamezőről van szó. LB_ERR Ha jelenleg nincs elem kijelölve.

Egy többszörös kijelölési listamezőben annak az elemnek az indexe, amely a fókuszt tartalmazza.

Megjegyzések

Ne hívja meg GetCurSel a többszörös kijelölésű listamezőt. A CListBox::GetSelItems használható helyette.

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

A listamezőből lekéri a képpontokban kifejezett szélességet, amellyel vízszintesen görgethető.

int GetHorizontalExtent() const;

Visszaadott érték

A listadoboz görgethető szélessége képpontban.

Megjegyzések

Ez csak akkor alkalmazható, ha a listamező vízszintes görgetősávot tartalmaz.

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

Lekéri a megadott listaelemhez társított alkalmazás által megadott duplaszó értéket.

DWORD_PTR GetItemData(int nIndex) const;

Paraméterek

nIndex
A listamezőben lévő elem nullaalapú indexét adja meg.

Visszaadott érték

Az elemhez társított érték, vagy LB_ERR hiba esetén.

Megjegyzések

A duplaszó értéke egy dwItemDataSetItemData hívás paramétere volt.

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

A megadott listaelemhez társított alkalmazás által megadott 32 bites értéket kéri le mutatóként (void*).

void* GetItemDataPtr(int nIndex) const;

Paraméterek

nIndex
A listamezőben lévő elem nullaalapú indexét adja meg.

Visszaadott érték

Lekéri a mutatót, vagy -1, ha hiba történik.

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

Meghatározza a listaelemek magasságát.

int GetItemHeight(int nIndex) const;

Paraméterek

nIndex
A listamezőben lévő elem nullaalapú indexét adja meg. Ezt a paramétert csak akkor használja a rendszer, ha a listamező stílusa megvan LBS_OWNERDRAWVARIABLE , ellenkező esetben 0 értékre kell állítani.

Visszaadott érték

A listamező elemeinek magassága képpontban. Ha a listamező stílussal LBS_OWNERDRAWVARIABLE rendelkezik, a visszatérési érték a megadott nIndexelem magassága. Hiba esetén a visszatérési érték a következő LB_ERR.

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

Lekéri annak a téglalapnak a méreteit, amelyek egy listaelemhez kötik, mivel az jelenleg a listamezőablakban jelenik meg.

int GetItemRect(
    int nIndex,
    LPRECT lpRect) const;

Paraméterek

nIndex
Az elem nulla alapú indexét adja meg.

lpRect
Hosszú mutatót ad meg egy RECT olyan struktúrához , amely megkapja az elem listamező ügyfélkoordinátáit.

Visszaadott érték

LB_ERR hiba esetén.

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

Lekéri az oszloponkénti elemek számát.

DWORD GetListBoxInfo() const;

Visszaadott érték

Az objektum oszloponkénti elemeinek CListBox száma.

Megjegyzések

Ez a tagfüggvény a Windows SDK-ban leírtak szerint emulálja az LB_GETLISTBOXINFO üzenet funkcióit.

CListBox::GetLocale

Lekéri a listamező által használt területi beállításokat.

LCID GetLocale() const;

Visszaadott érték

A listamezőben lévő sztringek területi azonosítója (LCID).

Megjegyzések

A területi beállítás például a rendezett lista sztringjeinek rendezési sorrendjének meghatározására szolgál.

Example

Lásd a példát.CListBox::SetLocale

CListBox::GetSel

Lekéri egy elem kijelölési állapotát.

int GetSel(int nIndex) const;

Paraméterek

nIndex
Az elem nulla alapú indexét adja meg.

Visszaadott érték

Pozitív szám, ha a megadott elem van kiválasztva; ellenkező esetben 0. A visszatérési érték az, LB_ERR ha hiba történik.

Megjegyzések

Ez a tagfüggvény egy- és többkijelöléses listamezőkkel is működik.

Az aktuálisan kijelölt listaelem indexének lekéréséhez használja CListBox::GetCurSela következőt: .

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

Lekéri a kijelölt elemek teljes számát egy többszörös kijelölési listamezőben.

int GetSelCount() const;

Visszaadott érték

A listamezőben kijelölt elemek száma. Ha a listamező egy kijelölési lista, a visszatérési érték a következő LB_ERR.

Example

Lásd a példát.CListBox::GetSelItems

CListBox::GetSelItems

A puffert egész számok tömbjével tölti ki, amely egy többszörös kijelölési lista kijelölt elemeinek elemszámát határozza meg.

int GetSelItems(
    int nMaxItems,
    LPINT rgIndex) const;

Paraméterek

nMaxItems
Megadja azon kijelölt elemek maximális számát, amelyeknek az elemszámait a pufferbe kell helyezni.

rgIndex
Egy olyan pufferre mutató mutatót ad meg, amely nMaxItemselég nagy a megadott számú egész számhoz.

Visszaadott érték

A pufferbe helyezett elemek tényleges száma. Ha a listamező egy kijelölési lista, a visszatérési érték a következő LB_ERR.

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

Sztringet kap egy listamezőből.

int GetText(
    int nIndex,
    LPTSTR lpszBuffer) const;

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

Paraméterek

nIndex
A lekérendő sztring nulla alapú indexét adja meg.

lpszBuffer
A sztringet fogadó pufferre mutat. A puffernek elegendő szóközzel kell rendelkeznie a sztringhez, és null karaktert kell megszüntetnie. A sztring mérete előre meghatározható a GetTextLen tagfüggvény meghívásával.

rString
Egy objektumra mutató CString hivatkozás.

Visszaadott érték

A sztring hossza (bájtban), a végződő null karakter kivételével. Ha nIndex nem ad meg érvényes indexet, a visszatérési érték a következő LB_ERR.

Megjegyzések

A tagfüggvény második formája kitölt egy objektumot a sztringszöveggel CString .

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

Lekéri egy karakterlánc hosszát egy listaelemben.

int GetTextLen(int nIndex) const;

Paraméterek

nIndex
A sztring nulla alapú indexét adja meg.

Visszaadott érték

A sztring hossza karakterekben, a befejező null karakter kivételével. Ha nIndex nem ad meg érvényes indexet, a visszatérési érték a következő LB_ERR.

Example

Lásd a példát.CListBox::GetText

CListBox::GetTopIndex

A listamező első látható elemének nullaalapú indexét kéri le.

int GetTopIndex() const;

Visszaadott érték

Ha sikeres, akkor a listamező első látható elemének nullaalapú indexe. LB_ERR

Megjegyzések

Kezdetben a 0. elem a listamező tetején található, de ha a listamező görgetve van, előfordulhat, hogy egy másik elem van a tetején.

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

Memóriát foglal le a listaelemek tárolásához.

int InitStorage(
    int nItems,
    UINT nBytes);

Paraméterek

nItems
Megadja azoknak az elemeknek a számát, amelyek számára helyet szeretne lefoglalni.

nBytes
Megadja az elemsztringekhez lefoglalandó további memória mennyiségét bájtban.

Visszaadott érték

Ha sikeres, a listamezőben tárolható elemek maximális száma a memória újratelepítése előtt, ellenkező esetben LB_ERRSPACEnem áll rendelkezésre elegendő memória.

Megjegyzések

Ezt a függvényt meghívhatja, mielőtt nagy számú elemet ad hozzá egy CListBox.

Ez a függvény felgyorsítja a nagy számú (több mint 100) elemből álló listamezők inicializálását. Előre áthelyezi a megadott mennyiségű memóriát, hogy az azt követő AddString, InsertStringés Dir a függvények hatékonyabbak legyenek. A paraméterek becsléseit használhatja. Ha túlbecsüli, a többletmemória lefoglalva marad; ha alábecsüli, a listamező szükség szerint további memóriát foglal le.

A sztring tárolásához szükséges memória tartalmazza a null terminátort. Ezért ha 100 sztringet szeretne hozzáadni, mindegyik 10 karakter hosszúságú, akkor egy 100-as wParam és egy 100 × (10 + 1) lParam × sizeof(TCHAR) értéket adna át.

Csak Windows 95/98 esetén: A nItems paraméter csak 16 bites értékekre korlátozódik. Ez azt jelenti, hogy a listamezők legfeljebb 32 767 elemet tartalmazhatnak. Bár az elemek száma korlátozott, a listamezőben lévő elemek teljes méretét csak a rendelkezésre álló memória korlátozza.

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

Sztring beszúrása a listamezőbe.

int InsertString(
    int nIndex,
    LPCTSTR lpszItem);

Paraméterek

nIndex
Megadja a sztring beszúrásához használt pozíció nullaalapú indexét. Ha ez a paraméter -1, a sztring a lista végére kerül.

lpszItem
A beszúrni kívánt null értékű sztringre mutat.

Visszaadott érték

Annak a pozíciónak a nullaalapú indexe, amelyre a sztringet beszúrták. A visszatérési érték az, LB_ERR ha hiba történik; a visszatérési érték az, LB_ERRSPACE ha nincs elegendő hely az új sztring tárolásához.

Megjegyzések

AddString A tagfüggvénytől InsertString eltérően nem okoz rendezést a LBS_SORT stílust tartalmazó lista.

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

Meghatározza a megadott ponthoz ptlegközelebbi listaelemet.

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

Paraméterek

pt
A listamező ügyfélterületének bal felső sarkához viszonyítva megadott legközelebbi elem megkeresésének pontja.

bOutside
Hivatkozzon egy BOOL változóra TRUE , amely akkor lesz beállítva, ha pt a listapanel ügyfélterületén kívül esik, FALSE ha pt a listamező ügyfélterületén belül van.

Visszaadott érték

A legközelebbi elem indexe a megadott ptponthoz.

Megjegyzések

Ezzel a függvénnyel meghatározhatja, hogy az egérmutató melyik listaelemre lép.

Example

Lásd a példát.CListBox::SetAnchorIndex

CListBox::MeasureItem

A keretrendszer meghívja, amikor létrejön egy tulajdonos-rajz stílusú listamező.

virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);

Paraméterek

lpMeasureItemStruct
Hosszú mutató egy MEASUREITEMSTRUCT szerkezetre.

Megjegyzések

Alapértelmezés szerint ez a tagfüggvény nem tesz semmit. Bírálja felül ezt a tagfüggvényt, és töltse ki a struktúrát, MEASUREITEMSTRUCT hogy tájékoztassa a Windowst a listamező dimenzióiról. Ha a listamező a LBS_OWNERDRAWVARIABLE stílussal jön létre, a keretrendszer meghívja ezt a tagfüggvényt a lista minden eleméhez. Ellenkező esetben a rendszer csak egyszer hívja meg ezt a tagot.

A stílusnak a LBS_OWNERDRAWFIXED tagfüggvényével SubclassDlgItemCWndlétrehozott tulajdonos-rajz listában való használatáról további információt a Technical Note 14-ben található vitafórumban talál.

Tekintse meg CWnd::OnMeasureItem a MEASUREITEMSTRUCT szerkezet leírását.

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

Eltávolítja az összes elemet egy listamezőből.

void ResetContent();

Example

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

CListBox::SelectString

Megkeresi a megadott sztringnek megfelelő listaelemet, és ha talál egy megfelelő elemet, kiválasztja az elemet.

int SelectString(
    int nStartAfter,
    LPCTSTR lpszItem);

Paraméterek

nStartAfter
Az elem nulla alapú indexét tartalmazza az első keresendő elem előtt. Amikor a keresés eléri a listamező alját, a listamező tetejétől a megadott nStartAfterelemig folytatódik. Ha nStartAfter -1, a teljes listamező az elejétől kezdve keresve lesz.

lpszItem
A keresendő előtagot tartalmazó null értékű sztringre mutat. A keresés a kis- és nagybetűk függetlenek, ezért ez a sztring tartalmazhat nagybetűk és kisbetűk tetszőleges kombinációját.

Visszaadott érték

A kijelölt elem indexe, ha a keresés sikeres volt. Ha a keresés sikertelen volt, a visszatérési érték az, LB_ERR és az aktuális kijelölés nem módosul.

Megjegyzések

A listamező szükség esetén görgetve jeleníti meg a kijelölt elemet.

Ez a tagfüggvény nem használható olyan listamezővel, amely stílussal rendelkezik LBS_MULTIPLESEL .

Egy elem csak akkor van kijelölve, ha a kezdő karakterei (a kezdőpontból) megegyeznek a megadott sztringben lpszItemszereplő karakterekkel.

FindString A tagfüggvény használatával az elem kijelölése nélkül kereshet sztringet.

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

Több egymást követő elem kijelölése több kijelölési listában.

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

Paraméterek

bSelect
A kijelölés beállításának módját adja meg. Ha bSelect igen TRUE, a sztring ki van jelölve és ki van emelve, ha FALSEa kiemelés el lesz távolítva, és a sztring már nincs kijelölve.

nFirstItem
Az első beállítandó elem nulla alapú indexét adja meg.

nLastItem
Az utolsó beállítandó elem nullaalapú indexét adja meg.

Visszaadott érték

LB_ERR hiba esetén.

Megjegyzések

Ezt a tagfüggvényt csak több kijelölési listamezővel használja. Ha csak egy elemet kell kijelölnie egy többszörös kijelölésű listamezőben – vagyis ha nFirstItem egyenlő nLastItem – hívja meg helyette a SetSel tagfüggvényt.

Example

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

CListBox::SetAnchorIndex

Ha a horgonyt egy többszörös kijelölési listamezőben állítja be, azzal megkezdheti a bővített kijelölést.

void SetAnchorIndex(int nIndex);

Paraméterek

nIndex
Megadja annak a listaelemnek a nullaalapú indexét, amely a horgony lesz.

Megjegyzések

Több kijelölésű listamezőben a horgonyelem az egybefüggő kijelölt elemek blokkjának első vagy utolsó eleme.

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

A fókusz téglalapot a megadott index elemére állítja be egy többszörös kijelölési listamezőben.

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

Paraméterek

nIndex
Megadja az elem nullaalapú indexét, amely a fókusz téglalapját szeretné megkapni a listamezőben.

bScroll
Ha ez az érték 0, az elem görgetve lesz, amíg teljesen látható nem lesz. Ha ez az érték nem 0, a program addig görgeti az elemet, amíg legalább részben nem látható.

Visszaadott érték

LB_ERR hiba esetén.

Megjegyzések

Ha az elem nem látható, a program görgeti a nézetbe.

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

A többoszlopos listamező összes oszlopának képpontban megadott szélességét állítja be (a LBS_MULTICOLUMN stílussal létrehozva).

void SetColumnWidth(int cxWidth);

Paraméterek

cxWidth
Az összes oszlop képpontban kifejezett szélességét adja meg.

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

Kiválaszt egy sztringet, és szükség esetén görgeti a nézetbe.

int SetCurSel(int nSelect);

Paraméterek

nSelect
A kijelölendő sztring nulla alapú indexét adja meg. Ha nSelect -1, a listamező nincs kijelölve.

Visszaadott érték

LB_ERR hiba esetén.

Megjegyzések

Az új sztring kijelölésekor a listamező eltávolítja a kiemelést a korábban kijelölt sztringből.

Ezt a tagfüggvényt csak egykijelölési listamezőkkel használhatja.

Ha több kijelölést tartalmazó listában szeretne kijelölést beállítani vagy eltávolítani, használja CListBox::SetSela következőt:

Example

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

CListBox::SetHorizontalExtent

Beállítja a szélességet képpontban, amellyel a listamező vízszintesen görgethető.

void SetHorizontalExtent(int cxExtent);

Paraméterek

cxExtent
Megadja, hogy hány képponttal görgethető a listamező vízszintesen.

Megjegyzések

Ha a lista mérete kisebb ennél az értéknél, a vízszintes görgetősáv vízszintesen görgeti a lista elemeit. Ha a listamező ekkora vagy nagyobb ennél az értéknél, a vízszintes görgetősáv rejtett.

A hívás SetHorizontalExtentmegválaszolásához a listamezőt a WS_HSCROLL stílussal kell definiálni.

Ez a tagfüggvény nem hasznos többoszlopos listamezők esetén. Többoszlopos listamezők esetén hívja meg a tagfüggvényt SetColumnWidth .

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

Egy listamezőben megadott elemhez társított értéket állít be.

int SetItemData(
    int nIndex,
    DWORD_PTR dwItemData);

Paraméterek

nIndex
Az elem nulla alapú indexét adja meg.

dwItemData
Megadja az elemhez társítandó értéket.

Visszaadott érték

LB_ERR hiba esetén.

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

A listamezőben megadott elemhez társított 32 bites érték beállítása a megadott mutatóra ( void*).

int SetItemDataPtr(
    int nIndex,
    void* pData);

Paraméterek

nIndex
Az elem nulla alapú indexét adja meg.

pData
Megadja az elemhez társítandó mutatót.

Visszaadott érték

LB_ERR hiba esetén.

Megjegyzések

Ez a mutató érvényes marad a listamező élettartamára, annak ellenére, hogy az elem relatív pozíciója a listamezőben az elemek hozzáadásakor vagy eltávolításakor változhat. Ezért az elem indexe a mezőben változhat, de a mutató megbízható marad.

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

A listamező elemeinek magasságát állítja be.

int SetItemHeight(
    int nIndex,
    UINT cyItemHeight);

Paraméterek

nIndex
A listamezőben lévő elem nullaalapú indexét adja meg. Ezt a paramétert csak akkor használja a rendszer, ha a listamező stílusa megvan LBS_OWNERDRAWVARIABLE , ellenkező esetben 0 értékre kell állítani.

cyItemHeight
Megadja az elem magasságát képpontban.

Visszaadott érték

LB_ERR ha az index vagy a magasság érvénytelen.

Megjegyzések

Ha a listamező stílussal LBS_OWNERDRAWVARIABLE rendelkezik, ez a függvény a megadott elem magasságát állítja nIndexbe. Ellenkező esetben ez a függvény a listamező összes elemének magasságát állítja be.

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

A lista területi azonosítójának beállítása.

LCID SetLocale(LCID nNewLocale);

Paraméterek

nNewLocale
A listamezőhöz beállított új területi azonosító (LCID) érték.

Visszaadott érték

A listamező korábbi területi azonosítójának (LCID) értéke.

Megjegyzések

Ha SetLocale nincs meghívva, a rendszer lekérte az alapértelmezett területi beállítást. Ez a rendszer alapértelmezett területi beállítása a Vezérlőpult regionális (vagy nemzetközi) alkalmazásával módosítható.

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

Kijelöl egy sztringet egy többszörös kijelölésű listamezőben.

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

Paraméterek

nIndex
A beállítani kívánt sztring nulla alapú indexét tartalmazza. Ha -1, a rendszer hozzáadja vagy eltávolítja a kijelölést az összes sztringből, az értéktől bSelectfüggően.

bSelect
A kijelölés beállításának módját adja meg. Ha bSelect igen TRUE, a sztring ki van jelölve és ki van emelve, ha FALSEa kiemelés el lesz távolítva, és a sztring már nincs kijelölve. A megadott sztring alapértelmezés szerint ki van jelölve, és ki van emelve.

Visszaadott érték

LB_ERR hiba esetén.

Megjegyzések

Ezt a tagfüggvényt csak több kijelölési listamezővel használja.

Ha egyetlen kijelölési listából szeretne kijelölni egy elemet, használja a következőt CListBox::SetCurSel: .

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

A tabulátorpozíciók beállítása egy listamezőben.

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

BOOL SetTabStops(
    int nTabStops,
    LPINT rgTabStops);

Paraméterek

cxEachStop
A tabulátorok minden cxEachStop párbeszédpanelen be vannak állítva. Tekintse meg rgTabStops a párbeszédpanel-egység leírását.

nTabStops
Megadja, hogy hány tabulátor legyen a listamezőben.

rgTabStops
A párbeszédpanel-egységek tabulátorpozícióit tartalmazó egész számok tömbjének első tagjára mutat. A párbeszédpanel-egység vízszintes vagy függőleges távolság. Egy vízszintes párbeszédpanel-egység az aktuális párbeszédpanel alapszélesség-egységének negyedével egyenlő, egy függőleges párbeszédpanelegység pedig az aktuális párbeszédpanel alapmagasságegységének egynyolcadával egyenlő. A párbeszédpanel alapegységei az aktuális rendszer betűtípusának magassága és szélessége alapján vannak kiszámítva. A GetDialogBaseUnits Windows függvény képpontban adja vissza az aktuális párbeszédpanel alapegységeit. A tabulátorokat növekvő sorrendbe kell rendezni; a vissza fülek nem engedélyezettek.

Visszaadott érték

Nonzero, ha az összes lap be van állítva; egyéb esetben 0.

Megjegyzések

Ha a tabulátorokat 2 párbeszédpanel-egység alapértelmezett méretére szeretné beállítani, hívja meg ennek a tagfüggvénynek a paraméter nélküli verzióját. Ha a tabulátorokat nem 2 méretre szeretné állítani, hívja meg a verziót az cxEachStop argumentummal.

Ha a tabulátorokat mérettömbre szeretné állítani, használja a verziót és az rgTabStopsnTabStops argumentumokat. A program tabulátort állít be az egyes értékekhez rgTabStopsa megadott nTabStopsszámig.

A tagfüggvény hívásának SetTabStops megválaszolásához a listamezőt a LBS_USETABSTOPS stílussal kell létrehozni.

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

Biztosítja, hogy egy adott listaelem látható legyen.

int SetTopIndex(int nIndex);

Paraméterek

nIndex
A listaelem nulla alapú indexét adja meg.

Visszaadott érték

Nulla, ha sikeres, vagy LB_ERR ha hiba történik.

Megjegyzések

A rendszer addig görgeti a listamezőt, amíg a megadott nIndex elem meg nem jelenik a lista tetején, vagy elérte a maximális görgetési tartományt.

Example

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

CListBox::VKeyToItem

A keretrendszer meghívja, amikor a listamező szülőablaka üzenetet kap WM_VKEYTOITEM a listamezőből.

virtual int VKeyToItem(
    UINT nKey,
    UINT nIndex);

Paraméterek

nKey
A felhasználó által lenyomott kulcs virtuális kulcskódja. A szabványos virtuális kulcskódok listáját lásd: Winuser.h

nIndex
A listadoboz-ápoló aktuális pozíciója.

Visszaadott érték

A - 2 értéket adja vissza további művelet nélkül, - 1 értéket az alapértelmezett művelethez, vagy egy nem nem megfelelő számot egy listaelem indexének megadásához, amelyen az alapértelmezett műveletet el szeretné végezni a billentyűleütéshez.

Megjegyzések

Az WM_VKEYTOITEM üzenetet a listamező küldi el, amikor üzenetet kap WM_KEYDOWN , de csak akkor, ha a listamező megfelel az alábbiaknak:

Ezt a függvényt soha ne nevezd magadnak. Bírálja felül ezt a függvényt, hogy saját egyénileg kezelje a billentyűzetüzeneteket.

Egy értéket kell visszaadnia, amelyből megtudhatja a keretrendszernek, hogy milyen műveletet hajtott végre a felülbírálás. A - 2 visszatérési érték azt jelzi, hogy az alkalmazás kezelte az elem kiválasztásának minden aspektusát, és nem igényel további műveletet a listamezőben. A - 2 visszatérés előtt beállíthatja a kijelölést, vagy áthelyezheti a simítót vagy mindkettőt. A kijelölés beállításához használja SetCurSel vagy SetSel. A gondviselet áthelyezéséhez használja SetCaretIndexa következőt: .

Az - 1 visszatérési érték azt jelzi, hogy a listamezőnek az alapértelmezett műveletet kell végrehajtania a billentyűleütésre válaszul. Az alapértelmezett implementáció eredménye – 1.

A 0 vagy annál nagyobb visszatérési érték megadja a listamező egyik elemének indexét, és azt jelzi, hogy a listamezőnek az adott elem billentyűleütéséhez az alapértelmezett műveletet kell végrehajtania.

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

Lásd még

MFC-minta CTRLTEST
CWnd osztály
Hierarchiadiagram
CWnd osztály
CButton osztály
CComboBox osztály
CEdit osztály
CScrollBar osztály
CStatic osztály