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


Kombinált lista funkciói

Ez a dokumentum a kombinált lista funkcióit ismerteti. További információkért tekintse meg a következő témaköröket:

Speciális funkciók

Vannak speciális célú üzenetek és függvények, amelyek lehetővé teszik, hogy az alkalmazások megjeleníthessék a címtárak listáját a kombinált listában, adatokat társíthassanak a kombinált lista listaelemeivel, és módosíthassák a legördülő lista vagy legördülő lista billentyűzetfelületét.

Címtárlisták

Az alkalmazások hozzáadhatják a fájlok vagy alkönyvtárak nevét egy kombinált listához a CB_DIR üzenet elküldésével. Az üzenet wParam paramétere határozza meg a hozzáadni kívánt fájlok attribútumait, az lParam paraméter pedig a fájl specifikációját meghatározó szöveges sztringre mutató mutató.

A DlgDirListComboBox függvénnyel lecserélheti a párbeszédpanelen lévő kombinált lista tartalmát. A függvény kitölti a kombinált listát a megadott feltételkészletnek megfelelő meghajtók, könyvtárak és fájlok nevével. A DlgDirSelectComboBoxEx függvény egy DlgDirListComboBoxáltal inicializált kombinált listában kéri le az aktuális kijelölést. Ezek a függvények lehetővé teszik, hogy a felhasználó úgy válasszon ki egy meghajtót, könyvtárat vagy fájlt egy kombinált listából, hogy nem írja be a fájl helyét és nevét.

A DlgDirListComboBox és DlgDirSelectComboBoxEx függvények és a CB_DIR üzenet hasonló a DlgDirList és DlgDirSelectEx függvényekhez, valamint a listamezőkhöz használt LB_DIR üzenethez.

Listaelemekhez társított adatok

Az alkalmazások adatokat társíthatnak a kombinált lista listaelemeivel. A CB_SETITEMDATA üzenet egy DWORD értéket társít egy listaelemhez, és a CB_GETITEMDATA lekéri a listaelemhez társított értéket.

A Tulajdonos által rajzolt kombinált lista létrehozása példa elemadatokkal társít egy állandót egy legördülő lista minden eleméhez. Egy ilyen egyedi érték azonosítja az egyes elemeket a rendezés helyétől függetlenül.

Más alkalmazások elemadatokkal társíthatnak egy leírót vagy mutatót egy listaelemhez. Ha igen, az alkalmazás feldolgozhat egy WM_DELETEITEM üzenetet a megadott objektum törléséhez vagy felszabadításához a listaelem törlésekor.

A kiterjesztett felhasználói felület

A legördülő lista és a legördülő lista támogatja a kiterjesztett felhasználói felületnevű alternatív billentyűzetfelületet. Alapértelmezés szerint az F4 billentyű megnyitja vagy bezárja a listát, a LE nyíl pedig módosítja az aktuális kijelölést. A kiterjesztett felhasználói felülettel rendelkező kombinált listában azonban az F4 billentyű le van tiltva, és a LE nyílbillentyű lenyomásával megnyílik a legördülő lista. Ezenkívül az egérkerék, amely általában végiggörget a lista elemein, nem rendelkezik semmilyen funkcióval, ha a kiterjesztett felhasználói felület be van állítva.

A kombinált lista felhasználói felületének kiválasztásához az alkalmazás elküldheti a CB_SETEXTENDEDUI üzenetet a kombinált listába. A wParam paraméter TRUE értéke lehetővé teszi a kiterjesztett felhasználói felületet; egy HAMIS érték állítja be az alapértelmezett felhasználói felületet. Annak megállapításához, hogy a kombinált lista a kiterjesztett felhasználói felületet használja-e, az alkalmazás elküldheti a CB_GETEXTENDEDUI üzenetet a kombinált listára.

Cue Banners

A gombos transzparensek a szerkesztési vezérlők és kombinált listák új funkciója. A cue banner célja, hogy egy tippet adjon a felhasználónak a szerkesztési vezérlő vagy kombinált lista céljára. Az alábbi képernyőképen egy szerkesztési vezérlő látható a "Keresés" szöveggel.

szerkesztési vezérlő képernyőképe a

A szöveg akkor jelenik meg, ha egy szerkesztési vezérlő nem rendelkezik szövegekkel, vagy ha a kombinált lista nem rendelkezik kijelöléssel. Amikor a felhasználó szöveget ír be a szerkesztési vezérlőbe, vagy kijelöl egy kombinált listában, a jelszalag eltűnik. Alapértelmezés szerint a cue szalagcím is eltűnik, amikor a szerkesztési vezérlő vagy a kombinált lista fókuszt kap.

Kombinált lista értesítései

A kombinált listákból érkező üzeneteket a rendszer értesítési kódként küldi el WM_COMMAND üzenetek formájában. Az értesítési kódot a wParam paraméter magas szava tárolja, és egy alkalmazás feldolgozhatja a következő kombinált lista értesítési kódjait.

Értesítési kód Leírás
CBN_CLOSEUP Azt jelzi, hogy egy legördülő lista vagy legördülő lista közel áll a bezáródáshoz.
CBN_DBLCLK Azt jelzi, hogy a felhasználó duplán kattintott egy listaelemre egy egyszerű kombinált listában.
CBN_DROPDOWN Azt jelzi, hogy egy legördülő lista vagy legördülő lista éppen megnyílik.
CBN_EDITCHANGE Azt jelzi, hogy a felhasználó módosította a szöveget egy egyszerű vagy legördülő lista szerkesztési vezérlőjében. Ezt az értesítési kódot küldi el, miután a módosított szöveg megjelenik.
CBN_EDITUPDATE Azt jelzi, hogy a felhasználó módosította a szöveget egy egyszerű vagy legördülő lista szerkesztési vezérlőjében. Ezt az értesítési kódot a rendszer küldi el, mielőtt a módosított szöveg megjelenik.
CBN_ERRSPACE Azt jelzi, hogy a kombinált lista nem tud elegendő memóriát lefoglalni egy kérés végrehajtásához, például listaelem hozzáadásához.
CBN_KILLFOCUS Azt jelzi, hogy a kombinált lista elveszíti a bemeneti fókuszt.
CBN_SELCHANGE Azt jelzi, hogy az aktuális kijelölés megváltozott.
CBN_SELENDCANCEL Azt jelzi, hogy a legördülő listában megadott kijelölést figyelmen kívül kell hagyni.
CBN_SELENDOK Azt jelzi, hogy a kijelölt legördülő listát el kell fogadni, amíg az el lett vetve.
CBN_SETFOCUS Azt jelzi, hogy a kombinált lista megkapta a bemeneti fókuszt.

 

Alapértelmezett kombinált lista viselkedése

Ez az alábbi táblázat az előre definiált COMBOBOX osztályablak-eljárás által kezelt üzeneteket ismerteti.

Üzenet Leírás
CB_ADDSTRING Egy listaelem hozzáadásához LB_ADDSTRING üzenetet küld a listaablakba.
CB_DELETESTRING Egy listaelem törléséhez LB_DELETESTRING üzenetet küld a listaablakba.
CB_DIR Hozzáadja a megadott attribútumoknak és elérési útnak megfelelő fájlneveket a listához.
CB_FINDSTRING LB_FINDSTRING üzenetet küld a listaablakba. Ez az üzenet a megadott szöveggel kezdődő első listaelem indexét adja vissza.
CB_FINDSTRINGEXACT LB_FINDSTRING üzenetet küld a listaablakba. Ez az üzenet az első listaelem indexét adja vissza, amely pontosan megfelel a megadott szövegnek.
CB_GETCOUNT LB_GETCOUNT üzenetet küld a listaablakba. A listaelemek számát adja vissza.
CB_GETCURSEL LB_GETCURSEL üzenet küldése a listaablakba. Ha van ilyen, az aktuálisan kijelölt elem indexét adja vissza.
CB_GETDROPPEDCONTROLRECT Kitölti a megadott téglalapszerkezetet egy legördülő lista képernyőkoordinátáival.
CB_GETDROPPEDSTATE TRUE ad vissza, ha egy legördülő lista meg van nyitva; ellenkező esetben HAMISad vissza.
CB_GETDROPPEDWIDTH A legördülő lista minimális megengedett szélességét adja vissza képpontban.
CB_GETEDITSEL Egy EM_GETSEL üzenetet küld a szerkesztési vezérlőnek, és visszaadja az aktuális kijelölés kezdő és záró pozícióját. A legördülő listákban az ablak eljárása CB_ERR ad vissza.
CB_GETEXTENDEDUI Igaz ad vissza, ha a kombinált lista egy legördülő lista vagy legördülő lista, és be van állítva a felhasználói felület kiterjesztése jelző; ellenkező esetben HAMISad vissza.
CB_GETHORIZONTALEXTENT LB_GETHORIZONTALEXTENT üzenetet küld a listaablakba. A legördülő lista görgethető szélességét adja vissza képpontban.
CB_GETITEMDATA LB_GETITEMDATA üzenetet küld a listaablakba. A megadott listaelemhez társított értéket adja vissza.
CB_GETITEMHEIGHT LB_GETITEMHEIGHT üzenetet küld a listaablakba. A megadott tulajdonos által rajzolt listaelem magasságát adja vissza képpontban.
CB_GETLBTEXT LB_GETTEXT üzenetet küld a listaablakba. A megadott listaszöveget a megadott pufferbe másolja.
CB_GETLBTEXTLEN LB_GETTEXTLEN üzenetet küld a listaablakba. Visszaadja a megadott listaszöveg TCHAR-hosszát.
CB_GETLOCALE LB_GETLOCALE üzenetet küld a listaablakba. A lista aktuális területi beállítását adja vissza.
CB_GETMINVISIBLE Lekéri a lista legördülő listájában látható elemek minimális számát.
CB_GETTOPINDEX LB_GETTOPINDEX üzenetet küld a listaablakba. A legördülő lista első látható elemének indexét adja vissza.
CB_INITSTORAGE LB_INITSTORAGE üzenet küldése a listaablakba. Inicializálja a megadott számú elem és az elemsztringek megadott bájtszámát.
CB_INSERTSTRING LB_INSERTSTRING üzenetet küld a listaablakba. Beszúr egy listaelemet a megadott helyre.
CB_LIMITTEXT EM_LIMITTEXT üzenetet küld a szerkesztési vezérlőnek. Beállítja a felhasználó által a szerkesztési vezérlőbe beírható karakterek maximális számát. A legördülő listákban az ablak eljárása CB_ERR ad vissza.
CB_RESETCONTENT Egy LB_RESETCONTENT üzenetet küld a listaablakba, és eltávolítja a lista tartalmát.
CB_SELECTSTRING LB_SELECTSTRING üzenetet küld a listaablakba. Kiválasztja az első listaelemet( ha van ilyen), amely a megadott szöveg karaktereivel kezdődik.
CB_SETCURSEL Egy LB_SETCURSEL üzenetet küld a listaablakba, és beállítja az aktuális kijelölést.
CB_SETDROPPEDWIDTH Beállítja a legördülő lista minimális megengedett szélességét képpontban.
CB_SETEDITSEL EM_SETSEL üzenetet küld a szerkesztési vezérlőnek. Kiválasztja a megadott szövegtartományt. A legördülő listákban az ablak eljárása CB_ERR ad vissza.
CB_SETEXTENDEDUI Beállítja vagy törli a kiterjesztett felhasználói felület jelzőt. Ez a jelölő módosítja a listát egy legördülő lista vagy legördülő lista megnyitásához és bezárásához. Ha a kombinált lista egy egyszerű kombinált lista, az ablak eljárás CB_ERR ad vissza.
CB_SETHORIZONTALEXTENT LB_SETHORIZONTALEXTENT üzenetet küld a listaablakba. A legördülő lista görgethető szélességét képpontban állítja be.
CB_SETITEMDATA LB_SETITEMDATA üzenet küldése a listaablakba. A megadott értéket egy listaelemhez társítja.
CB_SETITEMHEIGHT LB_SETITEMHEIGHT üzenetet küld a listaablakba. Beállítja a megadott tulajdonos által rajzolt listaelem vagy a kijelölési mező magasságát.
CB_SETLOCALE Egy LB_SETLOCALE üzenetet küld a listaablakba, és beállítja a lista aktuális területi beállítását. A területi beállítás hatással van a lista rendezési módjára, ha CBS_SORT stílussal rendelkezik, és a sztringek CB_ADDSTRINGhasználatával vannak hozzáadva.
CB_SETMINVISIBLE A kombinált lista legördülő listájában szereplő látható elemek minimális számát adja meg.
CB_SETTOPINDEX LB_SETTOPINDEX üzenet küldése a listaablakba. Görgeti a legördülő listát, hogy a megadott elem a látható tartomány tetején legyen.
CB_SHOWDROPDOWN Megjeleníti vagy elrejti a legördülő listát. Ez az üzenet nincs hatással az egyszerű kombinált listákra.
WM_CHAR Feldolgozza a karakterbemenetet. A legördülő listamezőkben ez az üzenet a listaablakba kerül, amely a kijelölést a megadott karakterrel kezdődő első elemre helyezi át. Az egyszerű és legördülő kombinált listákban a rendszer ezt az üzenetet továbbítja a szerkesztési vezérlőnek.
WM_CLEAR Törli a szerkesztési kijelölést. Az egyszerű és legördülő kombinált listákban a szerkesztési vezérlő feldolgozza ezt az üzenetet. A legördülő listákban az ablak eljárása CB_ERR ad vissza.
WM_COMMAND Feldolgozza a szerkesztési vezérlő és a listaablak értesítési üzeneteit, és elküldi a megfelelő kombinált lista értesítési kódjait a szülőablaknak.
Szerkesztésvezérlési értesítések esetén az ablak eljárása frissítheti a listaablak aktuális kijelölését, a simítási indexet és a felső indexet. A listaértesítési üzenetek esetében az ablak eljárása frissítheti a kijelölési mező tartalmát.
WM_COMPAREITEM Átadja az üzenetet a szülőablaknak, így az alkalmazás megadhatja két tulajdonos által rajzolt listaelem relatív rendezési pozícióját. A kombinált lista ablaka a listaablakból kapja meg ezt az üzenetet.
WM_COPY Másolja a szerkesztési kijelölést a vágólapra. Az egyszerű és legördülő kombinált listákban a szerkesztési vezérlő feldolgozza ezt az üzenetet. A legördülő listákban az ablak eljárása CB_ERR ad vissza.
WM_CREATE Inicializálja a kombinált listát.
WM_CUT Törli a szerkesztési kijelölést, és elhelyezi a vágólapon. Az egyszerű és legördülő kombinált listákban a szerkesztési vezérlő feldolgozza ezt az üzenetet. A legördülő listákban az ablak eljárása CB_ERR ad vissza.
WM_DELETEITEM Átadja az üzenetet a szülőablaknak, és értesíti az alkalmazást a listaelem törléséről. A kombinált lista ablaka a listaablakból kapja meg ezt az üzenetet.
WM_DRAWITEM Az üzenetet a szülőablakba továbbítja, amely lehetővé teszi, hogy az alkalmazás megfestse a megadott listaelemet. A kombinált lista ablaka a listaablakból kapja meg ezt az üzenetet. Az ablakműveletből az is származhat, hogy az alkalmazás kifestse egy legördülő lista kijelölési mezőjét.
WM_ENABLE Beállítja az állapotot az egér- és billentyűzetbemenet engedélyezéséhez vagy letiltásához.
WM_ERASEBKGND 1 értéket ad vissza, amely azt jelzi, hogy a háttér törlődik.
WM_GETDLGCODE A DLG_WANTCHARS és DLGC_WANTARROWS értékek kombinációját adja vissza.
WM_GETFONT Visszaadja a fogópontot az aktuális betűtípushoz, amellyel a kombinált lista megrajzolja a szövegét.
WM_GETTEXT Másolja a kijelölési mező tartalmát a megadott pufferbe. Az egyszerű és legördülő kombinált listákban a szerkesztési vezérlő feldolgozza ezt az üzenetet.
WM_GETTEXTLENGTH A kijelölési mező szövegének hosszát adja vissza karakterekben. Az egyszerű és legördülő kombinált listákban a szerkesztési vezérlő feldolgozza ezt az üzenetet.
WM_KEYDOWN Feldolgozza a nemcharacter billentyűzet bemenetét. A legördülő listamezőkben ez az üzenet a listaablakba kerül, amely megjelenítheti vagy elrejtheti önmagát, vagy módosíthatja az aktuális kijelölési vagy simítóindexet. Az egyszerű és legördülő kombinált listákban a rendszer ezt az üzenetet továbbítja a szerkesztési vezérlőnek. A szerkesztési vezérlő bizonyos kulcsokat továbbít a listaablakba, például a FEL és a LE nyílbillentyűt, valamint az F4 billentyűt.
WM_KILLFOCUS Elrejti a kiemelést a kijelölési mezőben, és szükség esetén bezárja a legördülő listát. Ha a beviteli fókuszt fogadó ablak a kombinált lista része (például a szerkesztési vezérlő), a rendszer figyelmen kívül hagyja ezt az üzenetet.
WM_LBUTTONDBLCLK Ugyanaz, mint WM_LBUTTONDOWN.
WM_LBUTTONDOWN A fókuszt a kombinált listára állítja, és a legördülő listák és legördülő listák esetében megnyithatja vagy bezárhatja a listát. Ha megnyitja a listát, az ablak eljárás rögzíti az egeret, hogy engedélyezze a kijelölést az egérgomb húzásával és felengedésével.
WM_LBUTTONUP Felszabadítja az egérrögzítést, ha az egér megnyitotta a listát.
WM_MEASUREITEM Közzéteszi az üzenetet a szülőablakban, így az alkalmazás módosíthatja a megadott MEASUREITEMSTRUCT struktúra tartalmát. A kombinált lista ablaka a listaablakból kapja meg ezt az üzenetet.
WM_MOUSEMOVE Az üzenet a listaablakba kerül, ha az egér megnyitotta a listát, és az egérgomb továbbra is le van kapcsolva. Így a felhasználó kijelölhet egy elemet úgy, hogy az egérmutatót egy listaelemre húzza, majd felengedi a gombot.
WM_NCCREATE A kombinált lista ablakának eljárása által használt belső adatstruktúra lefoglalása.
WM_NCDESTROY Felszabadítja a WM_NCCREATE üzenetre válaszul lefoglalt erőforrásokat.
WM_PAINT A kombinált lista érvénytelen régióját festi. Ha wParam nem NULL, akkor a rendszer azt feltételezi, hogy egy alosztályfüggvényből átadott eszközkörnyezeti (DC-) leíró. Az ablakos eljárás a megadott tartományvezérlőt használja BeginPaint és EndPaintmeghívása helyett.
WM_PASTE A szerkesztési kijelölést lecseréli a vágólap tartalmára. Az egyszerű és legördülő kombinált listákban a szerkesztési vezérlő feldolgozza ezt az üzenetet. A legördülő listákban az ablak eljárása CB_ERR ad vissza.
WM_SETFOCUS A fókuszt a szerkesztési vezérlőre állítja, vagy a legördülő listamezőkben megfordítja a kijelölési mezőt, és bekapcsolja a elemet a listaablakban.
WM_SETFONT Menti a megadott betűtípus-leírót egy belső struktúrában, módosítja a kijelölési mező és a lista méretét, és érvényteleníti a kombinált listaablakot. A kijelölési mezőben lévő szöveg és a lista a mentett betűtípusban jelenik meg.
WM_SETREDRAW Beállítja vagy törli az újraírási jelzőt. Ha az újrarajzolt jelző törlődik, a kombinált lista nem lesz újrafestve, amíg a jelölő újra be nem van állítva.
WM_SETTEXT Beállítja a szerkesztési vezérlő tartalmát. Az egyszerű és legördülő kombinált listákban a szerkesztési vezérlő feldolgozza ezt az üzenetet. A legördülő listákban az ablak eljárása CB_ERR ad vissza.
WM_SIZE Szükség esetén átméretezi a gyermekablakokat.
WM_SYSKEYDOWN A felhasználó által lenyomott nyílbillentyűtől függően megnyitja vagy bezárja a legördülő listát.

 

A rendszer minden más üzenetet továbbít a DefWindowProc függvénynek az alapértelmezett feldolgozáshoz.