Nastavení obou verzí aplikace bude standardně uloženo v registru. Funkce pro manipulaci s nastavením v registru RegCreateKeyEx, RegQueryValueEx jsou podporovány ve všech verzích Windows. Nastavení aplikace bude v kapesním i stolním počítači uloženo v klíči HKEY_CURRENT_USER\\Software\\Tomas Fuk\\List1.0.
Pro přenositelnost kódu nesmíme zapomenout i zde použít pro manipulaci s textem datový typ TCHAR a odpovídající funkce pro práci s ním. Práci s registrem je možné zapouzdřit do jednoduchého objektu. I tento objekt budeme využívat na obou platformách beze změny.
Hlavní okno aplikace bude obsahovat jediný prvek uživatelského rozhraní: seznam s ikonami (ListView). Prvek ListView může zobrazovat informace v jednom ze čtyř režimů: velké ikony s popisem, malé ikony, seznam a seznam s hlavičkami. Pro náš účel bude stačit zobrazení s malými ikonami.
ListView vytvoříme při obsluze zprávy WM_CREATE; po vytvoření k němu musíme přidat seznam ikon a naplnit jej obsahem. Abychom ušetřili paměť, jsou všechny položky uloženy v objektu Storage a ListView je vytvořen s příznakem LVS_OWNERDATA; stačí nastavit počet prvků seznamu a prvek ListView se bude pomocí upozornění LVN_GETDISPINFO dotazovat naší aplikace na texty jednotlivých položek.
Prvek ListView ovládáme pomocí funkcí ListView_XXX, které jsou popsány v dokumentaci Windows SDK. Všechny zprávy od prvku ListView jsou naší aplikaci zaslány prostřednictvím upozornění (WM_NOTIFY). Šipky, funkční klávesy apod. obsluhuje prvek ListView sám.
Nesmíme také zapomenout změnit velikost prvku ListView při každé změně velikosti okna (při obsluze zprávy WM_SIZE).
Změna některé položky našeho seznamu ListView probíhá následujícím způsobem:
Pro všechny funkce prvku ListView, které budeme potřebovat si vytvoříme obalující funkce (wrappers):
Co budeme chtít udělat | Jméno naší obalující funkce | Kdy bude funkce volána |
---|---|---|
Vytvoření | CreateListView | Obsluha zprávy WM_CREATE |
Zrušení | DestroyListView | Obsluha zprávy WM_DESTROY |
Změna velikosti prvku ListView | ResizeListViewToWindow | Obsluha zprávy WM_SIZE |
Přidání nové položky na konec seznamu | AddNewItemToListView | Položka menu "New", stisk klávesy Insert, stisk kláves Shift+Enter |
Vymazání všech položek seznamu | DeleteAllItemsInListView | Položka menu "Clear". |
Editace vybrané položky seznamu | EditListViewItem | Stisk klávesy F2, dvojklik na položce seznamu; editaci mohou Windows zahájit i samostatně. |
Smazání vybrané položky seznamu | DeleteListViewItem | Stisk klávesy Delete. |
Aktualizace textu položky seznamu, která byla editována | UpdateListViewItem | Obsluha upozornění LVN_ENDLABELEDIT. |
Vyzvednutí textu a čísla ikony z prvku Storage a jejich předání prvku ListView | GetListViewItemInfo | Obsluha upozornění LVN_GETDISPINFO. |
Změna ikony u vybrané položky seznamu | ListViewChangeIcon | Stisk mezerníku na vybrané položce. |
Posun vybrané položky seznamu nahoru nebo dolů | MoveListBoxItem | Shift + klávesa se šipkou nahoru nebo dolů |
Vybrání první položky seznamu. | SelectFirstListViewItem | Stisk klávesy Enter v situaci, kdy zatím není zvýrazněna žádná položka seznamu. |
Tyto obalující funkce (wrappers) zjednodušují ovládání prvku ListView a jeho propojení s obsluhou zpráv v hlavním okně aplikace. Příklad dvou obalujících funkcí:
a
Ondřej Lavička
Stránka načtena za 0.00193 sekund.