Programování PocketPC naruby (4/12)

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 popisu ukončení aplikace.
V minulém díle programování naruby jste se mohli seznámit s komunikací prostřednictvím dialogů. Dnes se podíváme na to, jak funguje ukončení aplikace a sdílení dat se stolním počítačem.

Ukončení aplikace

Některé aplikace umožňují uživateli ukončit je vlastnoručně, například pomocí položky menu; není to však obvyklé. Standardní klávesová zkratka pro ukončení aplikace je Ctrl+Q. Pokud se perem dotknete kolečka se znakem x v pravém horním rohu okna, operační systém aplikaci neukončí, pouze ji přenese do pozadí. Postupně tak narůstá počet spuštěných programů. Seznam spuštěných aplikací můžete otevřít v panelu nastavení paměti (Setitngs/Memory).

O ukončování aplikací se operační systém Pocket PC stará sám: pokud dospěje k závěru, že mu dochází paměť, začne posílat hlavním oknům aplikací zprávu WM_HIBERNATE. Pokud se rozhodnete na zprávu WM_HIBERNATE reagovat, měli byste po jejím přijetí rychle uvolnit co nejvíce paměti, kterou vaše aplikace využívala. Pokud uživatel vaši aplikaci znovu spustí, budete muset při obsluze zprávy WM_ACTIVATE znovu alokovat potřebnou paměť.

Pokud rozesílání zpráv WM_HIBERNATE neuvolnilo dostatečný objem paměti, začne operační systém Pocket PC aplikace ukončovat. Ukončování se děje standardním způsobem, zasláním zprávy WM_CLOSE hlavním oknům aplikací. Vzhledem k tomu, že vaše aplikace může být ukončena systémem, neměla by se při obsluze zprávy WM_CLOSE příliš dlouho zdržovat.

Uložení dat

Pro uložení dat disponuje operační systém PocketPC třemi různými "skladišti", která jsou všechna uložena v paměti RAM. Jsou to:

  • Systémový registr pro uchování konfigurace vaší aplikace. Registr je organizován stejně jako v jiných verzích Windows a používá stejné funkce k zápisu i ke čtení (RegCreateKeyEx, RegSetValueEx apod.). Tradiční místa pro uložení dat vaší aplikace jsou:
    HKEY_LOCAL_MACHINE\Software\Jméno_společnosti\Jméno_produktu
    HKEY_CURRENT_USER\Software\Jméno_společnosti\Jméno_produktu

  • Data mohou být uložena v databázích. Operační systém PocketPC obsahuje sadu funkcí pro práci s databázemi. Databáze mohou být uloženy buď v samostatných souborech, nebo v systémovém svazku databází.

    Databáze jsou složeny z jednotlivých záznamů; každý záznam obsahuje pole, která mohou být nastavena. Obsahem polí mohou být základní datové typy (číslo, řetězec, binární objekt); nemusí být nutně definována všechna pole záznamu. Můžete nastavit až pět polí, podle kterých bude databáze setříděna.

  • Systém souborů, ke kterému přistupujeme pomocí standardních funkcí knihovny C/C++ nebo pomocí standardních funkcí Windows API (CreateFile, ReadFile apod.).

    Při ukládání textů do souborů nesmíte zapomenout na to, že operační systém PocketPC používá jako standardní kódování znaků systém UNICODE, ve kterém je každý znak reprezentován 2 byte.

Sdílení dat se stolním počítačem

Přenosné počítače jsou často využívány jako rozšíření stolních počítačů. Proto je nutné se zamyslet nad tím, jak bude naše aplikace s programy na stolním počítači spolupracovat. Pro sdílení dat naší aplikace mezi stolním počítačem a Pocket PC máme následující tři možnosti:

  • Proceduru ActiveSync je možné nastavit tak, aby synchronizovala obsah adresáře "My Documents" z PocketPC s obsahem v adresáři na stolním počítači. Nejjednodušší mechanismus sdílení dat mezi stolním a kapesním počítačem je využívání společného souboru. Tento přístup je sice jednoduchý, ale má řadu nevýhod vyplývajících z toho, že soubor je zkopírován jako celek a není možné rozlišit mezi jednotlivými záznamy.

  • Můžete napsat vlastní synchronizační moduly (ActiveSync providers) pro synchronizaci dat mezi Pocket PC a stolním počítačem. Tento přístup je komplikovanější, ale umožňuje synchronizaci dat po jednotlivých záznamech.

  • Nakonec můžete využít služeb RAPI (Remote Application Programming Interface, možnost práce se soubory na Pocket PC ze stolního počítače). Podobně jako funkce CopyFile kopíruje soubory na stolním počítači, funkce CeCopyFile kopíruje soubory mezi kapesním počítačem a stolním počítačem. Pomocí RAPI je možné spouštět na Pocket PC programy, měnit obsah registru a pracovat se soubory.

V příští části si budete s námi moci vytvořit vlastní aplikaci.