Sdílet prostřednictvím


Funkce pole se seznamem

Tento dokument popisuje funkce pole se seznamem. Další informace najdete v následujících tématech:

Speciální funkce

Existují speciální zprávy a funkce, které aplikaci umožňují zobrazit výpis adresáře v poli se seznamem, přidružit data k položkám seznamu v poli se seznamem a změnit rozhraní klávesnice pro rozevírací seznam nebo rozevírací seznam.

Seznamy adresářů

Aplikace může přidat názvy souborů nebo podadresářů do pole se seznamem odesláním CB_DIR zprávy. Parametr wParam pro tuto zprávu určuje atributy souborů, které se mají přidat, a parametr lParam je ukazatel na textový řetězec, který definuje specifikaci souboru.

K nahrazení obsahu pole se seznamem v dialogovém okně můžete použít funkci DlgDirListComboBox. Funkce vyplní pole se seznamem názvy jednotek, adresářů a souborů, které odpovídají zadané sadě kritérií. Funkce DlgDirSelectComboBoxEx načte aktuální výběr v poli se seznamem inicializovaným DlgDirListComboBox. Tyto funkce umožňují uživateli vybrat jednotku, adresář nebo soubor ze pole se seznamem bez zadání umístění a názvu souboru.

Funkce DlgDirListComboBox a DlgDirSelectComboBoxEx a zpráva CB_DIR jsou podobné funkcím DlgDirList a DlgDirSelectEx a LB_DIR zprávy použité se seznamovými poli.

Data přidružená k položkám seznamu

Aplikace může přidružit data k položkám seznamu v poli se seznamem. Zpráva CB_SETITEMDATA přidruží k položce seznamu hodnotu DWORD a CB_GETITEMDATA načte hodnotu přidruženou k položce seznamu.

Příklad v Vytvoření pole se seznamem vlastníka nakreslený používá data položek k přidružení konstanty ke každé položce v rozevíracím seznamu. Taková jedinečná hodnota identifikuje každou položku nezávisle na své seřazené pozici.

Jiné aplikace můžou použít data položek k přidružení úchytu nebo ukazatele k položce seznamu. Pokud ano, aplikace může zpracovat WM_DELETEITEM zprávu k odstranění nebo uvolnění zadaného objektu při odstranění položky seznamu.

Rozšířené uživatelské rozhraní

Rozevírací pole se seznamem a rozevírací seznamy podporují alternativní klávesové rozhraní označované jako rozšířené uživatelské rozhraní. Ve výchozím nastavení se klávesa F4 otevře nebo zavře seznam a šipka dolů změní aktuální výběr. V poli se seznamem s rozšířeným uživatelským rozhraním je však klávesa F4 zakázaná a stisknutím klávesy ŠIPKA DOLŮ se otevře rozevírací seznam. Kromě toho kolečko myši, které obvykle prochází položkami v seznamu, nemá při nastavení rozšířeného uživatelského rozhraní žádnou funkci.

Pokud chcete vybrat uživatelské rozhraní pole se seznamem, může aplikace odeslat CB_SETEXTENDEDUI zprávu do pole se seznamem. Hodnota TRUE parametru wParam umožňuje rozšířené uživatelské rozhraní; hodnota FALSE nastaví výchozí uživatelské rozhraní. Chcete-li zjistit, zda pole se seznamem používá rozšířené uživatelské rozhraní, může aplikace odeslat CB_GETEXTENDEDUI zprávu do pole se seznamem.

Informační nápisy

Informační nápisy jsou novou funkcí ovládacích prvků pro úpravy a polí se seznamem. Účelem informačního nápisu je poskytnout uživateli nápovědu k účelu ovládacího prvku pro úpravy nebo pole se seznamem. Následující snímek obrazovky ukazuje ovládací prvek pro úpravy s textem "Hledat".

snímek obrazovky ovládacího prvku pro úpravy s

Text banneru s upozorněním se zobrazí, když ovládací prvek pro úpravy nemá žádný text nebo pole se seznamem nemá žádný výběr. Když uživatel zadá text do ovládacího prvku pro úpravy nebo provede výběr do pole se seznamem, banner s upozorněním zmizí. Ve výchozím nastavení banner upozornění také zmizí, když ovládací prvek pro úpravy nebo pole se seznamem dostane fokus.

Oznámení pole se seznamem

Zprávy ze polí se seznamem se odesílají jako kódy oznámení ve formě WM_COMMAND zpráv. Kód oznámení je uložen ve vysokém slově wParam parametru a aplikace může zpracovat následující kódy oznámení pole se seznamem.

Kód oznámení Popis
CBN_CLOSEUP Označuje seznam v rozevíracím seznamu nebo rozevíracím seznamu, který se chystá zavřít.
CBN_DBLCLK Označuje, že uživatel poklikáním na položku seznamu v jednoduchém poli se seznamem.
CBN_DROPDOWN Označuje seznam v rozevíracím seznamu nebo rozevíracím seznamu, který se chystá otevřít.
CBN_EDITCHANGE Označuje, že uživatel změnil text v ovládacím prvku pro úpravy jednoduchého nebo rozevíracího seznamu se seznamem. Tento kód oznámení se odešle po zobrazení změněného textu.
CBN_EDITUPDATE Označuje, že uživatel změnil text v ovládacím prvku pro úpravy jednoduchého nebo rozevíracího seznamu se seznamem. Tento kód oznámení se odešle před zobrazením změněného textu.
CBN_ERRSPACE Označuje, že pole se seznamem nemůže přidělit dostatek paměti k provedení požadavku, například přidání položky seznamu.
CBN_KILLFOCUS Označuje, že pole se seznamem se chystá ztratit vstupní fokus.
CBN_SELCHANGE Označuje, že se aktuální výběr změnil.
CBN_SELENDCANCEL Označuje, že výběr provedený v rozevíracím seznamu, zatímco byl vyřazen, by měl být ignorován.
CBN_SELENDOK Označuje, že výběr rozevíracího seznamu, zatímco byl vyřazen, by měl být přijat.
CBN_SETFOCUS Označuje, že pole se seznamem obdrželo vstupní fokus.

 

Výchozí chování pole se seznamem

Tato následující tabulka popisuje zprávy speciálně zpracovávané předdefinovanou procedurou okna třídy COMBOBOX.

Zpráva Popis
CB_ADDSTRING Odešle zprávu LB_ADDSTRING do okna seznamu a přidá položku seznamu.
CB_DELETESTRING Odešle zprávu LB_DELETESTRING do okna seznamu a odstraní položku seznamu.
CB_DIR Přidá názvy souborů odpovídající zadaným atributům a cestě k seznamu.
CB_FINDSTRING Odešle zprávu LB_FINDSTRING do okna seznamu. Tato zpráva vrátí index první položky seznamu, která začíná zadaným textem.
CB_FINDSTRINGEXACT Odešle zprávu LB_FINDSTRING do okna seznamu. Tato zpráva vrátí index první položky seznamu, která přesně odpovídá zadanému textu.
CB_GETCOUNT Odešle zprávu LB_GETCOUNT do okna seznamu. Vrátí počet položek seznamu.
CB_GETCURSEL Odešle zprávu LB_GETCURSEL do okna seznamu. Pokud existuje, vrátí index aktuálně vybrané položky.
CB_GETDROPPEDCONTROLRECT Vyplní zadanou strukturu obdélníku souřadnicemi obrazovky rozevíracího seznamu.
CB_GETDROPPEDSTATE Vrátí TRUE, pokud je otevřený rozevírací seznam; v opačném případě vrátí FALSE.
CB_GETDROPPEDWIDTH Vrátí minimální povolenou šířku v pixelech rozevíracího seznamu.
CB_GETEDITSEL Odešle EM_GETSEL zprávu do ovládacího prvku pro úpravy a vrátí počáteční a koncovou pozici aktuálního výběru. V rozevíracích seznamech vrátí procedura okna CB_ERR.
CB_GETEXTENDEDUI Vrátí TRUE pokud je pole se seznamem rozevírací seznam nebo rozevírací seznam a je nastaven příznak rozšířit uživatelské rozhraní; v opačném případě vrátí FALSE.
CB_GETHORIZONTALEXTENT Odešle zprávu LB_GETHORIZONTALEXTENT do okna seznamu. Vrátí posunovatelnou šířku v pixelech rozevíracího seznamu.
CB_GETITEMDATA Odešle zprávu LB_GETITEMDATA do okna seznamu. Vrátí hodnotu přidruženou k zadané položce seznamu.
CB_GETITEMHEIGHT Odešle zprávu LB_GETITEMHEIGHT do okna seznamu. Vrátí výšku zadané položky seznamu nakresleného vlastníkem v pixelech.
CB_GETLBTEXT Odešle zprávu LB_GETTEXT do okna seznamu. Zkopíruje zadaný text seznamu do zadané vyrovnávací paměti.
CB_GETLBTEXTLEN Odešle zprávu LB_GETTEXTLEN do okna seznamu. Vrátí délku zadaného textu seznamu v TCHARS.
CB_GETLOCALE Odešle zprávu LB_GETLOCALE do okna seznamu. Vrátí aktuální národní prostředí seznamu.
CB_GETMINVISIBLE Získá minimální počet viditelných položek v rozevíracím seznamu pole se seznamem.
CB_GETTOPINDEX Odešle zprávu LB_GETTOPINDEX do okna seznamu. Vrátí index první viditelné položky v rozevíracím seznamu.
CB_INITSTORAGE Odešle zprávu LB_INITSTORAGE do okna seznamu. Inicializuje mezeru pro zadaný počet položek a zadaný počet bajtů pro řetězce položek.
CB_INSERTSTRING Odešle zprávu LB_INSERTSTRING do okna seznamu. Vloží položku seznamu na zadanou pozici.
CB_LIMITTEXT Odešle EM_LIMITTEXT zprávu do ovládacího prvku pro úpravy. Nastaví maximální počet znaků, které může uživatel zadat do ovládacího prvku pro úpravy. V rozevíracích seznamech vrátí procedura okna CB_ERR.
CB_RESETCONTENT Odešle zprávu LB_RESETCONTENT do okna seznamu a odebere obsah seznamu.
CB_SELECTSTRING Odešle zprávu LB_SELECTSTRING do okna seznamu. Vybere první položku seznamu, pokud existuje, která začíná znaky v zadaném textu.
CB_SETCURSEL Odešle zprávu LB_SETCURSEL do okna seznamu a nastaví aktuální výběr.
CB_SETDROPPEDWIDTH Nastaví minimální povolenou šířku v pixelech rozevíracího seznamu.
CB_SETEDITSEL Odešle EM_SETSEL zprávu do ovládacího prvku pro úpravy. Vybere zadaný rozsah textu. V rozevíracích seznamech vrátí procedura okna CB_ERR.
CB_SETEXTENDEDUI Nastaví nebo vymaže příznak rozšířeného uživatelského rozhraní. Tento příznak změní klíče, které otevřete a zavřete seznam v rozevíracím seznamu nebo rozevíracím seznamu. Pokud je pole se seznamem jednoduché, vrátí procedura okna CB_ERR.
CB_SETHORIZONTALEXTENT Odešle zprávu LB_SETHORIZONTALEXTENT do okna seznamu. Nastaví posuvnou šířku v pixelech rozevíracího seznamu.
CB_SETITEMDATA Odešle zprávu LB_SETITEMDATA do okna seznamu. Přidruží zadanou hodnotu k položce seznamu.
CB_SETITEMHEIGHT Odešle zprávu LB_SETITEMHEIGHT do okna seznamu. Nastaví výšku zadané položky seznamu vytažené vlastníkem nebo pole výběru.
CB_SETLOCALE Odešle zprávu LB_SETLOCALE do okna seznamu a nastaví aktuální národní prostředí seznamu. Národní prostředí ovlivňuje způsob řazení seznamu, pokud má styl CBS_SORT a řetězce jsou přidány pomocí CB_ADDSTRING.
CB_SETMINVISIBLE Nastaví minimální počet viditelných položek v rozevíracím seznamu pole se seznamem.
CB_SETTOPINDEX Odešle zprávu LB_SETTOPINDEX do okna seznamu. Posune rozevírací seznam tak, aby zadaná položka byla v horní části viditelné oblasti.
CB_SHOWDROPDOWN Zobrazí nebo skryje rozevírací seznam. Tato zpráva nemá žádný vliv na jednoduchá pole se seznamem.
WM_CHAR Zpracovává vstup znaků. V rozevíracích seznamech se tato zpráva předá do okna seznamu, který přesune výběr na první položku začínající zadaným znakem. V jednoduchých a rozevíracích polích se seznamem se tato zpráva předá ovládacímu prvku pro úpravy.
WM_CLEAR Odstraní výběr úprav. V jednoduchých a rozevíracíchpolích V rozevíracích seznamech vrátí procedura okna CB_ERR.
WM_COMMAND Zpracovává zprávy oznámení z ovládacího prvku pro úpravy a okna seznamu a odesílá odpovídající kódy oznámení pole se seznamem do nadřazeného okna.
U oznámení ovládacích prvků pro úpravy může procedura okna aktualizovat aktuální výběr okna seznamu, index kurzoru a horní index. U zpráv s oznámením seznamu může procedura okna aktualizovat obsah pole výběru.
WM_COMPAREITEM Předá zprávu do nadřazeného okna a umožní aplikaci určit relativní pozici řazení dvou položek seznamu nakreslených vlastníkem. Okno se seznamem obdrží tuto zprávu z okna seznamu.
WM_COPY Zkopíruje výběr úprav do schránky. V jednoduchých a rozevíracíchpolích V rozevíracích seznamech vrátí procedura okna CB_ERR.
WM_CREATE Inicializuje pole se seznamem.
WM_CUT Odstraní výběr úprav a umístí ho do schránky. V jednoduchých a rozevíracíchpolích V rozevíracích seznamech vrátí procedura okna CB_ERR.
WM_DELETEITEM Předá zprávu do nadřazeného okna a oznámí aplikaci, že položka seznamu byla odstraněna. Okno se seznamem obdrží tuto zprávu z okna seznamu.
WM_DRAWITEM Předá zprávu do nadřazeného okna, které aplikaci umožní nakreslit zadanou položku seznamu. Okno se seznamem obdrží tuto zprávu z okna seznamu. Procedura okna může také pocházet z této zprávy, aby aplikace vykreslovala pole výběru rozevíracího seznamu.
WM_ENABLE Nastaví stav na povolení nebo zakázání vstupu myši a klávesnice.
WM_ERASEBKGND Vrátí hodnotu 1, která označuje, že pozadí je vymazáno.
WM_GETDLGCODE Vrátí kombinaci hodnot DLG_WANTCHARS a DLGC_WANTARROWS.
WM_GETFONT Vrátí úchyt k aktuálnímu písmu, pomocí kterého bude pole se seznamem kreslit jeho text.
WM_GETTEXT Zkopíruje obsah pole výběru do zadané vyrovnávací paměti. V jednoduchých a rozevíracíchpolích
WM_GETTEXTLENGTH Vrátí délku textu v poli výběru ve znaméně. V jednoduchých a rozevíracíchpolích
WM_KEYDOWN Zpracovává vstup klávesnice bez znaména. V rozevíracích seznamech se tato zpráva odešle do okna seznamu, které se může zobrazit nebo skrýt, nebo změnit aktuální výběr nebo kurzorový index. V jednoduchých a rozevíracích polích se seznamem se tato zpráva předá ovládacímu prvku pro úpravy. Ovládací prvek pro úpravy předává určité klávesy do okna seznamu, jako jsou klávesy ŠIPKA NAHORU a ŠIPKA DOLŮ a klávesa F4.
WM_KILLFOCUS Skryje zvýraznění v poli výběru a v případě potřeby zavře rozevírací seznam. Pokud je okno, které přijímá fokus vstupu, součástí pole se seznamem (například ovládací prvek pro úpravy), bude tato zpráva ignorována.
WM_LBUTTONDBLCLK Stejné jako WM_LBUTTONDOWN.
WM_LBUTTONDOWN Nastaví fokus na pole se seznamem a v rozevíracích seznamech a rozevíracích seznamech může seznam otevřít nebo zavřít. Pokud se otevře seznam, procedura okna zachytí myš a povolí výběr přetažením a uvolněním tlačítka myši.
WM_LBUTTONUP Uvolní zachytávání myši, pokud myš otevřela seznam.
WM_MEASUREITEM Publikuje zprávu do nadřazeného okna, což aplikaci umožňuje změnit obsah zadané MEASUREITEMSTRUCT struktury. Okno se seznamem obdrží tuto zprávu z okna seznamu.
WM_MOUSEMOVE Odešle zprávu do okna seznamu, pokud myš otevřela seznam a tlačítko myši je stále dole. To umožňuje uživateli vybrat položku přetažením ukazatele myši na položku seznamu a uvolněním tlačítka.
WM_NCCREATE Přidělí interní datovou strukturu používanou procedurou okna pole se seznamem.
WM_NCDESTROY Uvolní prostředky přidělené v reakci na zprávu WM_NCCREATE.
WM_PAINT Nakreslí neplatnou oblast pole se seznamem. Pokud wParam není null, předpokládá se, že se jedná o popisovač kontextu zařízení (DC) předaný z funkce podtřídy. Procedura okna používá místo volání BeginPaint a EndPaint.
WM_PASTE Nahradí výběr úprav obsahem schránky. V jednoduchých a rozevíracíchpolích V rozevíracích seznamech vrátí procedura okna CB_ERR.
WM_SETFOCUS Nastaví fokus na ovládací prvek pro úpravy nebo v rozevíracích seznamech invertuje pole výběru a zapne kurzor v okně seznamu.
WM_SETFONT Uloží zadaný úchyt písma v interní struktuře, upraví rozměry pole výběru a seznamu a zneplatní okno pole se seznamem. Text v poli výběru a v seznamu se zobrazí v uloženém písmu.
WM_SETREDRAW Nastaví nebo vymaže příznak překreslení. Pokud se příznak překreslení vymaže, pole se seznamem se nepřekreslí, dokud se příznak znovu nenastaví.
WM_SETTEXT Nastaví obsah ovládacího prvku pro úpravy. V jednoduchých a rozevíracíchpolích V rozevíracích seznamech vrátí procedura okna CB_ERR.
WM_SIZE V případě potřeby změní velikost podřízených oken.
WM_SYSKEYDOWN Otevře nebo zavře rozevírací seznam v závislosti na tom, kterou klávesu se šipkou uživatel stiskl.

 

Všechny ostatní zprávy se předají funkciDefWindowProc pro výchozí zpracování.