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


Programování pro PocketPC - Aplikace založené na dialogu 3/6

aktualizováno 
Aplikace založené na dialogu jsou tím naprosto nejjednodušším druhem aplikací pro počítače s operačním systémem založeným na Microsoft Windows, včetně zařízení PocketPC. Ukážeme vám, jak je naprogramovat a k čemu všemu mohou sloužit.

Aplikace založené na dialogu jsou tím naprosto nejjednodušším druhem aplikací pro počítače s operačním systémem založeným na Microsoft Windows, včetně zařízení PocketPC. V této minisérii budeme mluvit o aplikacích založených na různých typech dialogů a ukážeme si, že je velmi jednoduché je naprogramovat a jdou používat nejen k vytváření jednoduchých aplikací, ale například i k "simulaci" uživatelského rozhraní PalmOS.

Pro začátečníka je často první úspěšně přeložená a fungující aplikace založená na dialogu vstupenkou do světa programování v operačním systému Windows CE.

"Nový" vzhled PocketPC dialogů

S příchodem počítačů typu PocketPC přestal klasický vzhled dialogů stačit. Dialogy nového stylu nemají titulkový pruh a jsou vždy roztaženy přes celý displej. Standardním prostředkem ukončení dialogu se stalo tlačítko (OK) v pravém horním rohu dialogu. Tlačítko (OK) má standardně identifikátor IDOK.

Jedinou významnou slabinou ovládání nových dialogů je chybějící standardizovaný způsob, jak dialog ukončit bez uložení informací. Pokud si přejeme dát uživateli možnost ukončit dialog bez uložení informací, musíme buď sami doplnit do dialogu tlačítko Zruš/Cancel, nebo toto tlačítko umístit do řádku MenuBar.

I nový vzhled dialogu nastavujeme při inicializaci dialogu při obsluze zprávy WM_INITDIALOG. Vuláme funkci SHInitDialog, které předáme vyplněnou strukturu SHINITDLGINFO:

SHINITDLGINFO shidi;
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIZEDLGFULLSCREEN;
shidi.hDlg = hDlg;
SHInitDialog(&shidi);

Pomocí příznaku SHIDIM_FLAGS zvolíme, že si přejeme nastavit typ dialogu, příznak SHIDIF_SIZEDLGFULLSCREEN zvolí právě námi požadovaný "nový" vzhled dialogu. Význam příznaku SHIDIF_DONEBUTTON je následující:

SHIDIF_DONEBUTTON | SHIDIF_SIZEDLGFULLSCREEN V pravém horním rohu je tlačítko (OK), které po stisknutí generuje zprávu WM_COMMAND s identifikátorem IDOK.
pouze SHIDIF_SIZEDLGFULLSCREEN V pravém horním rohu je zobrazeno tlačítko s křížkem; stidknutí tohoto tlačítka přenese aplikaci do pozadí.

Každé kliknutí na ikonu naší aplikace je vytvořeno nové okno dialogu. Toto chování není zdaleka optimální - pokud například uživatel začne psát text, přepne se do jiné aplikace a znovu klikne na ikonu v seznamu aplikací, spustí se nová instance aplikace i dialogové okno. Současně může narůstat počet spuštěných kopií naší jediné aplikace.

Proto je výhodné testovat po spuštění naší aplikace, zda není již náš dialog zobrazen. Nejjednodušším způsobem je použití funkce FindWindow, která vyhledá okno v závislosti na jeho třídě a titulku. Dialogy mají vždy třídu oken DIALOG, hledaný titulek okna je totožný s titulkem dialogu:

HWND hwnd = FindWindow(TEXT("DIALOG"), TEXT("Pokus 3"));

if(hwnd)
{
    SetForegroundWindow(hwnd);
    return 0;
}

Pokud naši aplikaci nyní spustíme opakovaně, pokusí se nejprve vyhledat svoji dříve spuštěnou kopii a pokud existuje, tak ji zobrazí pomocí funkce SetForegroundWindow a ukončí se. Výsledkem bude uživatelův pocit, že pracuje s jednou aplikací, do které se může přepínat pomocí ikony v seznamu aplikací.

Pokud potřebujeme změnit nebo upravit titulek okna, voláme funkci SetWindowText, která funguje i na titulky dialogů.

Zdrojový text příkladu si můžete stáhnout (ZIP) zde.

Vytváření uživatelského rozhraní v eVC++

Při práci s "novými" dialogy v eVC++ se setkáte s tím, že budete muset odhadnout velikost vytvářeného dialogu. Bylo by sice logické, aby eVC++ obsahoval nějaký vzor pro dialogy přes celý displej, ale není tomu tak. Lepší, než určovat velikost dialogu metodou pokus-omyl je následující výpočet:

Velikost dialogu se udává tradičně v "dialogových jednotkách". Jedna takováto jednotka šířky je definována jako 1/4 průměrné šířky použitého písma a dialogová jednotka výšky je definována jako 1/8 průměrné výšky použitého písma. Pro počítače PocketPC, kde je standardní písmo MS Sans 8, které je vysoké asi 14 pixelů a široké asi 7 pixelů nám vychází maximální velikost dialogu přibližně na 137 x 154 dialogových jednotek:

šířka 240 pixelů / 7 * 4 = 137 d.u.
(výška 320 pixelů - titulek okna - command bar = 270 pixelů) / 14 * 8 = 154 d.u. 

Pokud vytvoříme dialog menší, než je displej, bude automaticky rozšířen. Překročíme-li však rozměry displeje, mohou se některé ovládací prvky dostat za hranice displeje a uživatel s nimi nebude moci pracovat.


V příštím díle budeme mluvit o aplikacích, které jsou založeny na uživatelském rozhraní programovatelném v HTML.





Nejčtenější

Ilustrační snímek
Dovolená v Egyptě je vyšla draho. Operátor chtěl téměř 80 tisíc

Deset srpnových dní strávených v Egyptě se britskému páru výrazně prodražilo. Důvodem nebyly ovšem neplánované výdaje v místě pobytu, překvapení přišlo až po...  celý článek

IBM Simon
Takový smartphone jsme ještě netestovali. Rarita, která nedává smysl

V roce 1994 se začala psát komerční budoucnost chytrých telefonů. IBM Simon se stal prvním chytrým telefonem na trhu. Z dnešního pohledu je to především...  celý článek

iPhone 8 zakusil i klasickou ohybovou zkoušku. A uspěl, k nevratným deformacím...
iPhone 8 bodoval v crashtestech. Youtuber jej neohnul

Ve vodách chytrých telefonů známý youtuber Zachary Nelson prověřil sérií zatěžkávacích testů zbrusu nový iPhone 8. Telefonu uštědřil nespočet škrábanců,...  celý článek

Xiaomi Mi 6
Tato lahůdka mezi výkonnými smartphony stojí 12 tisíc, má to ale háček

Na českém trhu se objevil zajímavý supersmartphone od čínského Xiaomi. Za 12 tisíc nabídne bohatou výbavu, která se dá srovnat s nejvýkonnějšími telefony...  celý článek

Huawei Mate 10 Pro
Tak nízkou cenu nikdo nečekal. Huawei Mate 10 Pro zatopí konkurenci

Huawei představil v Mnichově nový špičkový smartphone Mate 10. Překvapí hned v několika ohledech. Stejně jako nové iPhony má neuroprocesor, který se sám učí,...  celý článek

Další z rubriky

Ilustrační snímek
Na dovolené se můžete seznámit i nespálit

Na dovolenou si bereme kde co, ovšem počítač/notebook často zůstává doma. Ten je na jedné straně prostředkem k pohodlnému přístupu k informacím, na druhé pak k...  celý článek

Aplikace Facebook Messenger Lite je dostupná i v Česku
Šetří místo i data. Dietní Messenger od Facebooku je i v Česku

Facebook Messenger je jedním z nejpoužívanějších kecálků, ale ne všechny telefony si s ním poradí. Loni se tak zrodila myšlenka na odlehčenou verzi určenou pro...  celý článek

Mobilní Messenger projde změnou, k nelibosti uživatelů v něm budou cílené...
Bez reklamy ani ránu. Bude už i na Facebook Messengeru v mobilu

Oblíbený mobilní kecálek se brzy promění. Facebook totiž do Messengeru po úspěšném testování implementuje cílené reklamy. Zobrazovat se budou na domovské...  celý článek

Najdete na iDNES.cz



mobilní verze
© 1999–2017 MAFRA, a. s., a dodavatelé Profimedia, Reuters, ČTK, AP. Jakékoliv užití obsahu včetně převzetí, šíření či dalšího zpřístupňování článků a fotografií je bez souhlasu MAFRA, a. s., zakázáno. Provozovatelem serveru iDNES.cz je MAFRA, a. s., se sídlem
Karla Engliše 519/11, 150 00 Praha 5, IČ: 45313351, zapsaná v obchodním rejstříku vedeném Městským soudem v Praze, oddíl B, vložka 1328. Vydavatelství MAFRA, a. s., je členem koncernu AGROFERT.