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

Spotem s Trojanem na horách operátor popudil Poláky. Nerozuměli nadsázce

21. dubna 2024  8:01

Po dvojici Vojtěch Kotek a Lukáš Pavlásek, k níž později přibyl Jakub Kohák, vsadil T-Mobile ve...

Je to už spíš foťák s mobilem a opravdu se povedl. Test Xiaomi 14 Ultra

21. dubna 2024

Prémiový smartphone Xiaomi 14 Ultra působí mezi současnou nabídkou mobilů jako unikát. Jaký jiný...

{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...}

Toto zařízení mělo nahradit mobily. V recenzích se mu vysmáli

23. dubna 2024

Novinka s názvem Humane AI Pin se zdála být převratným zařízením. V mnoha ohledech měla nahradit...

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...

Samsung má povedenou stylovku. Zkusí to s ní na trhu, kde se mu nedaří

24. dubna 2024

Samsung po velmi dlouhé době oprášil modelovou řadu Galaxy C a představil stylový smartphone se...

Toto zařízení mělo nahradit mobily. V recenzích se mu vysmáli

23. dubna 2024

Novinka s názvem Humane AI Pin se zdála být převratným zařízením. V mnoha ohledech měla nahradit...

Možná s nenápadnou výbavou, ale je to poctivě postavená stylovka

22. dubna 2024

Oppo se v kontextu dalších čínských výrobců prezentuje jako prémiová značka. Rozhodně se nesnaží o...

Spotem s Trojanem na horách operátor popudil Poláky. Nerozuměli nadsázce

21. dubna 2024  8:01

Po dvojici Vojtěch Kotek a Lukáš Pavlásek, k níž později přibyl Jakub Kohák, vsadil T-Mobile ve...

Akční letáky
Akční letáky

Prohlédněte si akční letáky všech obchodů hezky na jednom místě!

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,...

Herečka Hunter Schaferová potvrdila románek se španělskou zpěvačkou

Americká herečka Hunter Schaferová potvrdila domněnky mnoha jejích fanoušků. A to sice, že před pěti lety opravdu...

Největší mýty o zubní hygieně, kvůli kterým si můžete zničit chrup

Možná si myslíte, že se v péči o zuby orientujete dost dobře, přesto v této oblasti stále ještě existuje spousta...

Tenistka Markéta Vondroušová se po necelých dvou letech manželství rozvádí

Sedmá hráčka světa a aktuální vítězka nejprestižnějšího turnaje světa Wimbledonu, tenistka Markéta Vondroušová (24), se...