Premium

Získejte všechny články
jen za 89 Kč/měsíc

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

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

Neomezená data dává O2 ještě levněji než dříve. S odměnou jsou za hubičku

15. dubna 2024  7:02

Základní datově neomezený tarif za cenu nižší, než standardně stojí tarif s 12 GB dat? U O2 na...

Doma si natáhnete neviditelné kabely k internetu. Huawei ukázal inovace

17. dubna 2024

Huawei na každoroční roadshow ukázal v Praze své inovace pro letošní rok. Vedle průmyslových...

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

K mobilu teď dostanete televizi zdarma a levnější jsou také iPhony

16. dubna 2024,  aktualizováno  10:12

Výrobci mobilních telefonů se už zase začínají předhánět ve výhodných nabídkách. Přímé slevy jsou...

Čínský smartphonový standard dorazil do Česka. Není co vytknout, ani cenu

17. dubna 2024  7:02

Motorola představila hned tři modely z top řady Edge. První se začne prodávat model Edge 50 Pro,...

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

Pošlete sportovní fotku a vyhrajte smartphone nebo dres Patrika Schicka

8. dubna 2024,  aktualizováno  18.4 13:04

Zachyťte na fotografii sportovní moment a vyhrajte úplnou novinku, smartphone vivo V40 SE s bohatou...

Operátoři zahušťují pokrytí Česka signálem 5G. Máte ho doma? Podívejte se

20. dubna 2024

Premium V červenci to budou již čtyři roky, co byla v Česku spuštěna první komerční 5G síť. Zatímco v...

Nudný telefon bojuje proti závislosti na smartphonech pitím piva

20. dubna 2024

The Boring Phone, tedy Nudný telefon, má uživatele oprostit od všech online služeb a přimět k přímé...

Mobily začínají vadit. Obec u Paříže je zakázala, v Nizozemsku nesmějí do škol

19. dubna 2024

Premium Ačkoliv žijeme v době, kdy mnoho lidí téměř nedá mobil z ruky, někde už úřadům a dalším institucím...

I velké značky mají laciné smartphony. Ale počítejte s kompromisy

19. dubna 2024

Výrobci telefonů mají zpravidla řešení i pro ty zákazníky, kteří potřebují co možná nejlevnější...

Manželé Babišovi se rozcházejí, přejí si zachovat rodinnou harmonii

Podnikatel, předseda ANO a bývalý premiér Andrej Babiš (69) s manželkou Monikou (49) v pátek oznámili, že se...

Sexy Sandra Nováková pózovala pro Playboy. Focení schválil manžel

Herečka Sandra Nováková už několikrát při natáčení dokázala, že s odhalováním nemá problém. V minulosti přitom tvrdila,...

Charlotte spí na Hlaváku mezi feťáky, dluží spoustě lidí, říká matka Štikové

Charlotte Štiková (27) před rokem oznámila, že zhubla šedesát kilo. Na aktuálních fotkách, které sdílela na Instagramu...

Vykrojené trikoty budí emoce. Olympijská kolekce Nike je prý sexistická

Velkou kritiku vyvolala kolekce, kterou pro olympijský tým amerických atletek navrhla značka Nike. Pozornost vzbudily...

Ve StarDance zatančí Vondráčková, Paulová, hvězda Kukaček i mistryně světa

Tuzemská verze celosvětově mimořádně úspěšné soutěže StarDance britské veřejnoprávní televizní společnosti BBC se už na...