Jednou z novinek ve Windows CE 3.0 (jak nás upozorňuje průvodce po spuštění zařízení) je zavedení kontextové nabídky. Přidržíme-li stylus na jednom místě displeje, zobrazí se časovač (červené tečky obíhající hrot stylusu) a po nějaké době se zobrazí kontextová nabídka.
Zobrazení kontextové nabídky je ve všech verzích Microsoft Windows stejné, a to voláním funkce TrackPopupMenuEx, podobně jako v následujícím rámečku:
Pokud programujeme vlastní ovládací prvky, tak nám stačí zavolat funkci SHRecognizeGesture při zpracování události WM_LBUTTONDOWN. Parametrem funkce SHRecognizeGesture můžeme zvolit, zda tato funkce hodnotu GN_CONTEXTMENU vrátí, nebo zda ji odešle hlavnímu oknu aplikace jako upozornění pomocí zprávy WM_NOTIFY.
V aplikacích, které využívají standardní ovládací prvky Windows je však hlavnímu oknu aplikace odesíláno upozornění GN_CONTEXTMENU na zobrazení kontextové nabídky automaticky. Proto stačí doplnit do obsluhy události WM_NOTIFY následující řádek:
Přidržíme-li stylus nad nějakou položkou displeje delší dobu, zobrazí se jednoduchá kontextová nabídka, která umožní vybrat ze dvou možností. Pokud některou z nabízených možností využijeme, je hlavnímu oknu odeslána příslušná zpráva WM_COMMAND.
V řadě případů potřebujeme, aby naše aplikace reagovala na nějakou systémovou událost, například na ukončení synchronizace. Operační systém Windows CE nabízí funkci CeRunAppAtEvent, která zajistí spuštění aplikace při uvedené události, například při změně systémového času nebo při ukončení synchronizace.
Je-li aplikace spuštěna automaticky, je jí na příkazové řádce předán parametr, kterým je předdefinovaný textový řetězec. Aplikace nesmí v takovém případě zablokovat systém a neměla by ani spouštět svoji kopii. Ve většině případů aplikace testuje, zda již neběží v pozadí. Pokud ano, pošle hlavnímu oknu dříve spuštěné aplikace zprávu, která způsobí například aktualizaci dat po ukončení synchronizace.
Jakmile si aplikace již nepřeje být spouštěna při dané události, odregistruje se voláním funkce CeRunAppAtEvent s parametrem NOTIFICATION_EVENT_NONE.
V naší aplikaci potřebujeme reagovat na událost konce synchronizace jen tehdy, je-li aplikace spuštěna, například v pozadí. V takovém případě potřebujeme znovu načíst datový soubor; jinak by mohlo dojít k jeho neúmyslnému přepsání.
Teď již máme navrženou plnohodnotnou Pocket PC aplikaci, která je (byť velmi omezeně) schopna synchronizovat data se stolním počítačem. Tento příklad snad demonstroval, že vytváření aplikací pro Microsoft Windows, včetně jajich kapesní verze, je v základech velmi podobné; liší se pouze některé techniky, které jsou však poměrně podrobně zdokumentovány.
Ondřej Lavička
Stránka načtena za 0.00195 sekund.