Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
C/C++
Učíme se Win API - 14.
winapi_logo
8. dubna 2002, 00.00 | V tomto pokračování si ukážeme práci s běžnými ovládacími prvky na dialogu - bude to zejména list-box a combo-box. V té souvislosti si také ukážeme, jak můžeme vytvořit projekt založený na dialogovém okně.
V tomto pokračování si ukážeme práci s běžnými ovládacími prvky na dialogu - bude to zejména list-box a combo-box. V té souvislosti si také ukážeme, jak můžeme vytvořit projekt založený na dialogovém okně.
Založme si nejprve nový projekt, opět prázdnou aplikaci Win32. Do projektu si přidáme zdrojový soubor main.cpp a soubor zdrojů (resource skript) main.rc. Do zdrojů si přidáme dialog s prvky které vidíte na následujícím screen-shotu již hotového programu:
Pokud chceme mít aplikaci založenou pouze na hlavním dialogovém okně, zdrojový kód bude jednodušší než v případě vytváření běžného "overlapped" okna, jako jsme to dělali dosud. Již jsme si řekli v předchozích dílech, pro dilogové okno neregistrujeme vlastní třídu a nebude zde ani smyčka zpráv, protože celá funkce WinMain bude obsahovat vyvolání modálního dialogu funkcí DialogBox:
|
Vlastní funkčnost prvků dialogu budeme realizovat v proceduře dialogu, přesněji řečeno pro větší přehlednost budeme volat jednotlivé samostatné funkce, představující handlery zpráv od ovládacích prvků. Procedura okna dialogu je obdobná proceduře "běžného" okna s tím zjednodušením, že nevoláme funkci DefWindowProc pro výchozí zpracování zprávy, ale vrátíme hodnotu FALSE. Pokud zprávu zpracováváme zcela ve vlastní režii, vrátíme hodnotu TRUE. Podívejme se tedy na celou proceduru dialogu a začneme vysvětlováním jednotlivých handlerů:
|
Budeme chtít na stisknutí tlačítka přidat aktuální obsah edit-boxu do položek list-boxu a dále na druhé tlačítko vybranou položku list-boxu odstranit a její text přidat do combo-boxu nadepsaného "Odebrané položky". Aktuální počet položek list-boxu pak budeme zobrazovat v prvku typu "static".
Veškeré ovládání list-boxu spočívá v posílání příslušných zpráv, popřípadě zjištění návratové hodnoty funkce SendMessage. Uvedu zde přehled těch zpráv, které budeme používat:
LB_ADDSTRING - slouží pro přidání jednoduchého textu do list-boxu. Přidávaný text je v parametyru lParam.
LB_GETCOUNT - návratová hodnota zprávy určuje aktuální počet položek list-boxu.
LB_GETCURSEL - vrací index vybrané položky (počítáno od 0) nebo -1, pokud není vybraná žádná položka.
LB_SETCURSEL - nastavuje vybranou položku, její index je v parametru wParam
LB_DELETESTRING - odstraní položku s indexem určeným parametrem wParam.
LB_GETTEXT - naplní nám buffer (parametr lParam) obsahem položky na indexu určeném parametem wParam.
V případě combo-boxu je ovládání obdobné s tím, že zprávy combo-boxu začínají na CB_ místo LB_ jako u list-boxu.
Ještě poznámku k zobrazování číselné hodnoty (zde počet položek list-boxu) v prvku static. V tom případě musíme u vybraného static prvku změnit identifikátor z defaultního IDC_STATIC na nějakou vlastní hodnotu a poté můžeme použít funkci SetDlgItemInt:
|
Takto vybaveni se již můžeme podívat na realizaci přidání položky do list-boxu:
|
Odebrání a přidání odebírané položky do combo-boxu vypadá pak následovně:
|
Zde si můžete stáhnout doprovodný projekt: win_api_14.zip.
Obsah seriálu (více o seriálu):
- Učíme se Win API - motivační úvod
- Učíme se WinAPI - Začínáme
- Učíme se WinAPI - 3.
- Učíme se Win API - 4.
- Učíme se Win API - 5.
- Učíme se Win API - 6.
- Učíme se Win API - 7.
- Učíme se Win API - 8
- Učíme se Win API - 9.
- Učíme se Win API - 10.
- Učíme se Win API - 11.
- Učíme se Win API - 12.
- Učíme se Win API - 13.
- Učíme se Win API - 14.
- Učíme se Win API - 15.
- Učíme se Win API - 16.
- Učíme se Win API - 17.
- Učime se Win API - 18.
- Učime se Win API - 19.
- Učime se Win API - 20.
- Učime se Win API - 21.
- Učime se Win API - 22.
- Učime se Win API - 23.
- Učime se Win API - 24.
- Učíme se Win API - 25.
- Učíme se Win API - 26.
- Učíme se Win API - 27.
- Učíme se Win API - 28.
- Učíme se Win API - uživatelsky kreslený ListBox
- Učíme se Win API - uživatelsky kreslený ListBox II
- Dialog výběru složky a naplnění ListBoxu soubory
- Vyhledávání souborů - zjištění obsahu složky
- Pracujeme s ComboBoxem ve WinAPI
- Pracujeme s ComboBoxem II.
- Rozšířený prvek ComboBoxEx
- Ovládací prvek TrackBar
- Ovládací prvek Progress Bar
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007