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

Programování PocketPC naruby (3/12)

aktualizováno 
Patříte mezi uživatele PocketPC, kteří by si rádi také něco naprogramovali, řadíte se však k tzv. falešným začátečníkům? Pak právě vám je určen náš seriál věnovaný programování pro kapesní počítače s Windows Mobile. Dnešní díl věnujeme komunikaci prostřednictvím dialogů.
V minulých dílech našeho seriálu o programování jste se mohli seznámit s úvodem do programování pro Pocket PC zařízení a s návrhem obsahu programu. Dnes se zaměříme na dialogy.

Dialogy

Vlastní komunikace s uživatelem se většinou děje prostřednictvím dialogů. Dialogy u Pocket PC většinou zabírají celý displej; od hlavních oken aplikace se liší tím, že v pravém horním rohu mají tlačítko s textem (ok). Dialogy mohou obsahovat obvyklé ovládací prvky, na které jsme zvyklí z jiných verzí Microsoft Windows.

Pokud váš dialog obsahuje pole pro vstup textu, musíte se zamyslet nad jeho vztahem k SIP (Software Input Panel - virtuální klávesnice nebo ploška pro kreslení znaků v dolní části displeje). Pole pro vstup textu by se měla nacházet v horních dvou třetinách displeje, aby nebyla překryta virtuální klávesnicí. Také se můžete rozhodnout, jak se bude SIP chovat při aktivaci dialogu:

  • automaticky se skryje
  • automaticky se aktivuje
  • aktivuje se v závislosti na vybraném políčku a nastavení operačního systému

Každý dialog musí obsahovat funkci, jež zpracovává zprávy operačního systému, které s dialogem souvisí (inicializaci dialogu - zprávu WM_INITDIALOG a změnu stavu ovládacích prvků - WM_COMMAND). Ani v tomto se neliší Pocket PC od stolních Windows. Příklad nejjednodušší funkce dialogu pod operačním systémem Windows CE 3.0 je v následujícím rámečku; až na volání funkce SHInitDialog, která nastaví SIP panel a tlačítko OK:


BOOL CALLBACK MyDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
        case WM_INITDIALOG:
            {
                SHINITDLGINFO shidi;
                shidi.dwMask = SHIDIM_FLAGS;
                shidi.dwFlags = SHIDIF_DONEBUTTON | 
                                SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN;
                shidi.hDlg = hwnd;
                SHInitDialog(&shidi);
            }
            return TRUE;

        case WM_COMMAND:
            if(wParam == IDOK)
            {
                EndDialog(hwnd, TRUE);
                return TRUE;
            }
            break;

        default:
            break;
    }

    return FALSE;
}

V klasických dialozích na Pocket PC chybí tlačítko pro opuštění dialogu bez provedení změn; ani na softwarové klávesnici se nevyskytuje tlačítko ESC. Vestavěné aplikace (například databáze kontaktů) nedovolují vrátit změny, které uživatel v dialogu udělal zpět. Pro pohodlí uživatele je vhodné do dialogu doplnit vlastní tlačítko pro opuštění dialogu bez uložení změn.

Spuštění aplikace

Chcete-li, aby vaše aplikace mohl uživatel spustit z nabídky programů, musíte umístit jejich zástupce do složky \Windows\Start Menu\Programs\. Pokud uživatel aplikaci spustí, je předána kontrola funkci WinMain (podobně jako u jiných verzí Windows) a je spuštěna nová instance aplikace.

Pokud si nepřejete, aby byla spuštěna více než jedna instance vaší aplikace, je vhodné, aby vaše aplikace po spuštění zkontrolovala, zda již nebyla spuštěna jiná její kopie (voláním funkce FindWindow). Pokud nalezne svoji kopii, předá jí řízení - jinak se sama spustí.


    HWND hWnd = FindWindow(szClassName, szWindowTitle);
	
    if (hWnd)
    {
        SetForegroundWindow((HWND)((ULONG) hWnd | 0x00000001));
        return 0;
    }

Další kód funkce WinMain - vytvoření hlavního okna aplikace a smyčka zpráv - vás jistě nepřekvapí.

Aplikace, které mají svá hlavní okna na obrazovce Today, jsou spuštěné neustále.

Pokud si přejete dát uživateli na vědomí, že je vaše aplikace spuštěna v pozadí, a nabídnout mu jednoduchý způsob, jak do ní přejít, můžete umístit ikonu aplikace do systémové lišty (Tray) voláním funkce Shell_NotifyIcon.

Příště si přiblížíme ukončení aplikace a ukládání dat.



Nejčtenější

Takto vypadá boj o zákazníky: pětkrát více dat a úhrada smluvní pokuty

Slovenský operátor O2 navýšil základní data u vybraných tarifů

Od revoluce v roce 2013 zažívá český mobilní trh spíše menší otřesy, zákazníci operátorů toužící po neomezeném tarifu s...

Konkurence se trefuje do „předražených“ nových iPhonů

Všechny tyto produkty Xiaomi stojí stejně, jako nový model iPhone XR

Na vysoké ceny novinek od Applu reagovali konkurenti poněkud posměšnými nabídkami. Ukazují v nich, co všechno z jejich...



Feministky kritizují nové iPhony. Jsou moc velké na ženskou ruku

iPhone XS/XS Max

Od doby, kdy Apple upustil od malých smartphonů, úhlopříčka nových modelů prudce narůstá. Nejnovější model ve verzi Max...

Prohlédněte si nejlepší a nejdražší iPhone. Máme ho jako první

iPhone XS Max

Stejně jako v předchozích letech jsme se i letos vypravili do Německa, abychom mohli vyzkoušet nejnovější smartphone od...

Toto je prapředek vašich smartphonů. První android slaví 10 let

T-Mobile G1

Prvnímu mobilnímu telefonu s operačním systémem Android je 10 let. Stroj známý jako T-Mobile G1 byl totiž představen...

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

Tyto aplikace vám řeknou vše o počasí. Vyberte si pro vás tu pravou

Ilustrační snímek

Nástroje, které vám pomohou zjistit, jaké bude počasí, jsou v mobilu mnohdy neocenitelným pomocníkem. Vybrali jsme ty...

Online randění pozastaveno. Facebook nechtěně odstřihl uživatele od Tinderu

Aplikace Tinder

Změna bezpečnostních nastavení Facebooku v reakci na nedávné skandály s úniky dat má celkem závažný důsledek pro ty,...

Najdete na iDNES.cz