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ší

iPhone SE 2 má být už v květnu. Takto by měl vypadat

Údajný iPhone SE 2.

iPhone SE byl představen před dvěma roky, jeho design je pak vyloženě zastaralý. Vychází z šest let starého modelu....

V sobotu koupíte smartphony Xiaomi za 399 Kč a sluchátka za korunu

Sleva

Čínské Xiaomi od loňska oficiálně působí v Česku a po několika stáncích otvírá i plnohodnotný obchod. První zákazníci...



Obchod pětiletky finišuje. Spojení Vodafonu a UPC ovlivní i trh v Česku

Vodafone jedná o převzetí operátora UPC

Vodafone by měl v nejbližší době koupit některé evropské pobočky Liberty Global. Obchod se týká i Česka, znamenalo by...

Drsná metoda autoškoly, žáci museli položit své mobily na silnici

Neobvyklý způsob učení parkování v čínské autoškole

V čínské autoškole vymysleli originální způsob, jak naučit studenty velmi opatrně zaparkovat. Na čáry vyhrazené pro...

Nejnovější smartphone od Samsungu se nedokáže připojit k internetu

Samsung Galaxy J2 Pro ve verzi bez internetu

Samsung připravil smartphone, který by u nás ocenili možná jen senioři. Případně ti, kteří se obávají možného zneužití...

Další z rubriky

Aplikace ukazovala otravující čísla. Data kradl antivir přímo z mobilů

Škodlivý kód Cooligan napadá zařízení s Androidem 4 a 5

Zajímavý model vymyslelo studio DU. Jedna jejich android aplikace ukazovala, kdo volá, včetně obtěžujících čísel...

K používání aplikace WhatsApp vám nově musí být minimálně 16 let

Whatsapp bude umět zpětně vymazat odeslané zprávy

Chatovací služba WhatsApp mění podmínky používání v Evropské unii. Nově začíná platit, že pro používání služby vám musí...

Na aplikace alternativních taxi útočí virus. Pase po údajích ke kartám

Virus pro Android

Uživatelé mobilních aplikací alternativních taxi včetně aplikace Uber by měli být obezřetní. Ohrožuje je totiž nový...



Najdete na iDNES.cz