Klávesové zkratky na tomto webu - základní
Přeskočit hlavičku portálu


Programování pro PalmOS počítače krok za krokem (54)

aktualizováno 
Dnes si povíme něco o tom, jak aplikace zpracovává zprávy zasílané operačním systémem PalmOS při výběru z menu. Navrhneme také a vyzkoušíme uživatelskou nabídku pro naši aplikaci.

4.23. Zpracování události menu

Během výběru příkazu z menu potřebuje operační systém PalmOS zpracovávat některé události nezávisle na uživateli. Toto zpracování událostí uživatelské nabídky se děje ve funkci MenuHandleEvent(). Funkce MenuHandleEvent() se postará o zobrazení menu na displeji při stisknutí příslušného tlačítka; je-li menu zobrazeno, tak funkce MenuHandleEvent() vyhodnocuje pohyb perem po displeji a řídí zobrazování jednotlivých karet menu až do té doby, kdy uživatel zvolí příkaz menu nebo zruší jeho zobrazení na displeji.

Pokud uživatel vybere příkaz menu, zařadí funkce MenuHandleEvent() do fronty zpráv příslušnou zprávu menuEvent. Dotkne-li se uživatel displeje mimo hranice menu, operační systém uživatelskou nabídku smaže a obnoví zobrazení formuláře. Podobně se funkce MenuHandleEvent() stará i o zpracování zkrácených příkazů.

Boolean MenuHandleEvent(MenuBarType *menu, EventType *udalost, Uint16 *chyba)

Zpracuje události při zobrazení uživatelské nabídky (menu).

Vstupní parametry
  • menu - ukazatel na strukturu MenuBar, ve které jsou uložena data menu. Pokud má tento parametr hodnotu NULL, je použita standardní uživatelská nabídka, která je u každého formuláře definována za MENUID.
  • udalost - ukazatel na datovou strukturu, ve které jsou uložena data aktuální zprávy.
Výstupní parametry
  • chyba - došlo-li při ovládání uživatelské nabídky k chybě, je kód chyby uložen do této proměnné. Pokud funkce uloží do proměnné chyba jinou hodnotu než O, došlo k chybě.
Vrácená hodnota
  • true - zpráva byla operačním systémem zpracována a další funkce by ji již měly ignorovat.
  • false - Funkce MenuHandleEvent() tuto zprávu nezpracovala.

Funkci MenuHandleEvent() musíme zařadit do smyčky zpracování událostí naší aplikace. Funkci MenuHandleEvent() musíme volat po zpracování události operačním systémem, ale před zpracováním události naší aplikací. Vhodné uspořádání smyčky zpracování událostí v aplikaci, kde používáme menu, je v následujícím rámečku.

static void SmyckaZpracovaniUdalosti()
{
    EventType udalost;
    Err chyba;

    do
    {
        EvtGetEvent(&udalost, evtWaitForever);
		
        if (SysHandleEvent(&udalost)) continue;
		
        if(MenuHandleEvent(NULL, &udalost, &chyba)) continue;
		
        if(UdalostZpracovanaAplikaci(&udalost)) continue;
		
        FrmDispatchEvent(&udalost);
    }
    while(udalost.eType != appStopEvent);
}

Pokud v naší aplikaci používáme v každém formuláři jen standardní menu, můžeme parametry menu a chyba funkce MenuHandleEvent() bezpečně ignorovat.

Doplnění naší aplikace o uživatelskou nabídku

Chceme-li doplnit do naší aplikace uživatelskou nabídku, musíme ji nejprve definovat v souboru prostředků aplikace. Máme dva formuláře a menu definujeme pro každý formulář zvlášť.

Před tím, než začneme definovat jednotlivé karty menu, musíme si rozmyslet, jaké příkazy budou v menu uvedeny. Struktura menu ve formulářích by měla dodržovat několik jednoduchých doporučení:

  1. Příkazy na jednotlivých kartách menu by měly být seskupeny podle logické souvislosti.
  2. Pokud je nějaká funkce dostupná pomocí tlačítka ve formuláři, je zbytečné uvádět ji v menu.
  3. Je-li ve formuláři uvedeno políčko pro editaci textu, musí být v uživatelské nabídce uvedena karta Editace, která má standardní obsah a kterou budu popisovat v příštím dílu.
  4. U programů, které jsou distribuovány jako shareware nebo freeware, by měl být součástí uživatelské nabídky příkaz nazvaný O programu, který bude uživatele informovat o podmínkách šíření programu.

Pro vyzkoušení uživatelské nabídky definujeme jedno menu s právě jednou položkou: informací o programu. Po zvolení této položky zobrazíme informaci o programu tím nejjednodušším způsobem: funkcí FrmHelp(), kterou již známe ze třetí kapitoly. Toto menu bude přiřazeno k oběma formulářům aplikace.

V souboru prostředků aplikace musíme definovat příslušné menu a text nápovědy. Do definic obou formulářů musíme zařadit klíčové slovo MENUID, kterým k formuláři přiřazujeme standardní menu.

FORM ID FormularVstupni AT (0 0 160 160)
MENUID MenuSpolecne
BEGIN
    TITLE "Sifrovaci program"
    ...
END

FORM ID FormularVystupni AT (0 0 160 160)
MENUID MenuSpolecne
BEGIN
    TITLE "Zakodovany text"
    ...
END

MENU ID MenuSpolecne
BEGIN
  PULLDOWN "Program"
  BEGIN
    MENUITEM "O Programu" ID PolozkaMenuOProgramu "O"
  END
END

STRING ID TextOProgramu " Tento program je soucasti knihy "     ">>Programovani pro Palm Piloty krok za krokem<<.\n\n"     " Program je distribuovan jako freeware a autor nenese "     "zadnou odpovednost za skody vznikle pouzitim programu."

Nesmíme také zapomenout doplnit odpovídající definice konstant do hlavičkového souboru.


V příštím dílu doplníme zdrojový text programu o zpracování události menu a rozebereme si funkce menu na kartě Editace.





Nejčtenější

Tchajwanský průmyslový designér Chris Wu navrhl koncept chytrých hodinek s...
Tyto chytré hodinky jsou opravdu inovativní. Mají otočný displej

Chytré hodinky s operačním systémem jsou poměrně mladou záležitostí, na trhu se objevily poprvé před čtyřmi roky. Doposud se ovšem mezi uživatele nerozšířily...  celý článek

Alcatel Pop 4 (6)
Smartphonový Obr XXL za rozumné peníze. Test Alcatel Pop 4 (6)

Značka Alcatel dodává na trh celou řadu cenově atraktivních smartphonů, které přitom nesahají ke zbytečným kompromisům. Na první pohled je takovým přístrojem i...  celý článek

Samsung Galaxy S8
Prodeje Galaxy S8 nemusí být růžové, pomoci by mohl Note 8

Samsung při zmínce o prodejích svého nového top modelu pouze sdělil, že se prodává nejlépe v historii, ale žádná čísla neuvedl. Nyní to vypadá, že prodeje...  celý článek

Ilustrační snímek
Chtěl se vyfotit na záchodě. Omylem vystřelil a dostal šest let

Striptýzové kluby slibují nevšední zážitky, střelba mezi ně ovšem nepatří. O takový netradiční zážitek se loni 17. prosince návštěvníkům klubu Lust ve...  celý článek

Samsung Galaxy S8
Samsung S8+ v prodeji i ve verzi pro dvě SIM. Jeden slot je kombinovaný

Samsung začal na českém trhu oficiálně prodávat dvousimkovou verzi svého top modelu Galaxy S8+. Ovšem řešení neumožní používat dvě SIM a paměťovou kartu...  celý článek

Další z rubriky

Ilustrační snímek
S těmito aplikacemi se o dovolené neztratíte. Najdou let i levný hotel

Místo slovníku, mapy a průvodce už řada lidí vyráží na dovolenou na neznámé místo jen se svým telefonem. V mnoha situacích je totiž neocenitelným pomocníkem....  celý článek

Netradiční fotoaplikace Gudak vás donutí nad fotkami zase přemýšlet
Za 23 korun vám aplikace fotku z iPhonu ukáže až za tři dny

Vnímání fotografie se za posledních pár let výrazně změnilo. Díky záznamovým médiím již totiž nemusíme přemýšlet nad každým snímkem jako kdysi. Doby, kdy se...  celý článek

Ilustrační snímek
Facebook a Snapchat jsou zabijáci výkonu smartphonů s Androidem

Je jednou z nejčastěji instalovaných mobilních aplikací, současně však i jednou z těch, které nejvýrazněji ovlivňují výkon androidích smartphonů. Na rychlosti...  celý článek

Najdete na iDNES.cz



mobilní verze
© 1999–2017 MAFRA, a. s., a dodavatelé Profimedia, Reuters, ČTK, AP. Jakékoliv užití obsahu včetně převzetí, šíření či dalšího zpřístupňování článků a fotografií je bez souhlasu MAFRA, a. s., zakázáno. Provozovatelem serveru iDNES.cz je MAFRA, a. s., se sídlem
Karla Engliše 519/11, 150 00 Praha 5, IČ: 45313351, zapsaná v obchodním rejstříku vedeném Městským soudem v Praze, oddíl B, vložka 1328. Vydavatelství MAFRA, a. s., je členem koncernu AGROFERT.