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


Programování pro PocketPC - Aplikace založené na dialogu 4/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.

Dialogy programovatelné v HTML

Věřte nebo ne, ale na počítačích s operačním systémem PocketPC je velmi jednoduché naprogramovat aplikaci, která s uživateli komunikuje prostřednictvím uživatelského rozhraní, popsaného v jazyce HTML. Je to možné díky komponentě HtmlViewer, která nemá svoji paralelu na stolních Windows.

Do námi vytvořeného dialogu je možné komponentu přidat vložením uživatelem definovaného ovládacího prvku (Custom control), který do dialogu vložíme pomocí ikony vpravo. Ve vlastnostech prvku pak nastavíme jméno třídy na DISPLAYCLASS:

Posledními dvěma podmínkami pro úspěšné používání dialogů založených na HTML je přidání knihovny htmlview.lib na záložce Link nastavení projektu a inicializace, kterou provedeme ve funkci WinMain:

InitHTMLControl(hInstance);

S prohlížečem HTML komunikujete pomocí zpráv, které mu zasíláte; nejdůležitější zprávy jsou následující:

DTM_CLEAR Vymaže obsah prohlížeče HTML.
DTM_ADDTEXTW Přidává text do prohlížeče; pokud má wParam hodnotu FALSE, přidává se text jako HTML, jestliže má hodnotu TRUE, tak nejsou interpretovány HTML formátovací značky.
DTM_ENDOFSOURCE Označuje konec dokumentu a umožňuje jej vykreslit.
DTM_SETIMAGE Používá se při asociaci bitmapy s parametrem src prvku img.
DTM_NAVIGATE Přejde na libovolné zvolené URL.

Takže jednoduchý HTML formulář vytvoříme například voláním následujících funkcí při zpracování události WM_INITDIALOG (uznávám, že jeho design je spíše ... strohý):

hwndHTML = GetDlgItem(hDlg, IDC_FRAME);
SendMessage(hwndHTML, DTM_CLEAR, 0, 0L);
SendMessage(hwndHTML, DTM_ADDTEXTW, FALSE, (LPARAM)TEXT("<HTML><BODY><P>Toto je text, <b>tucne</b> a <i>kurziva</i></P>"));
SendMessage(hwndHTML, DTM_ADDTEXTW, FALSE, (LPARAM)TEXT("<CENTER><A HREF=MujHyperlink>Hyperlink</A><BR>"));
SendMessage(hwndHTML, DTM_ADDTEXTW, FALSE, (LPARAM)TEXT("<FORM method=post action=MujFormular>"));
SendMessage(hwndHTML, DTM_ADDTEXTW, FALSE, (LPARAM)TEXT("<INPUT TYPE=checkbox NAME=skrt /> Zaskrtni<BR>"));
SendMessage(hwndHTML, DTM_ADDTEXTW, FALSE, (LPARAM)TEXT("Napis: <INPUT TYPE=text SIZE=10 NAME=edituj /><BR>"));
SendMessage(hwndHTML, DTM_ADDTEXTW, FALSE, (LPARAM)TEXT("<INPUT TYPE=submit VALUE=Stiskni />"));
SendMessage(hwndHTML, DTM_ADDTEXTW, FALSE, (LPARAM)TEXT("</FORM></CENTER>"));
SendMessage(hwndHTML, DTM_ADDTEXTW, FALSE, (LPARAM)TEXT("<INPUT TYPE=button VALUE=Konec NAME=Konec /><BR>"));
SendMessage(hwndHTML, DTM_ADDTEXTW, FALSE, (LPARAM)TEXT("</CENTER>"));
SendMessage(hwndHTML, DTM_ADDTEXTW, FALSE, (LPARAM)TEXT("</BODY></HTML>"));
SendMessage(hwndHTML, DTM_ENDOFSOURCE, 0, (LPARAM)NULL);

Ovládací prvek zobrazující HTML, který jsme vložili do formuláře, zasílá funkci dialogu zprávy WM_NOTIFY. Tyto zprávy informují funkci dialogu o kliknutí na odkaz, nutnosti načíst obrázek a podobně. Jednoduchý příklad zpracování zprávy WM_NOTIFY je následující:

case WM_NOTIFY:
    if(LOWORD(wParam) == IDC_FRAME)
    {
        NM_HTMLVIEW *pn = (NM_HTMLVIEW *)lParam;

        if(pn->hdr.code == NM_HOTSPOT && pn->szTarget)
        {
            if(_tcscmp(pn->szTarget, TEXT("MujFormular")) == 0)
            {
                MessageBox(hDlg, pn->szData, TEXT("Formular"), MB_OK);
                return TRUE;
            }
            else if(_tcscmp(pn->szTarget, TEXT("Konec")) == 0)
            {
                PostQuitMessage(0);
                return TRUE;
            }
// ...
            return FALSE;
    }            
    break;

Tučně zvýrazněný text v obou příkladech zdrojového kódu jsou jména hyperlinků, které definujeme v našem HTML kódu a na něž můžeme reagovat při zpracování notifikace NM_HOTSPOT.

Současně není jednodušší věc, než "přepínání formulářů". Prostou změnou obsahu prvku pro prohlížení HTML (sekvence zpráv DTM_CLEAR, DTM_ADDTEXTW a DTM_ENDOFSOURCE) zaměníte prohlížený dokument za jiný.

Prvek pro prohlížení HTML v sobě obsahuje celou funkcionalitu Pocket Internet Exploreru, která je sice hluboko pod úrovní stolních prohlížečů, ale přesto umožňuje vytvořit elegantní uživatelské rozhraní.

Jako vždy, příklad naleznete ke stažení (ZIP) zde.


V dalším dílu si do aplikace založené na dialogu přidáme prázdné hlavní okno programu a naznačíme si, jak simulovat přepínání dialogů v uživatelském rozhraní počítačů s PalmOS.





Nejčtenější

Smartphony s obřími displeji jsou čím dál oblíbenější a to i proto, že výrobci...
Králové mezi přerostlými smartphony. Z kapes vytáhnou hodně peněz

Smartphony s obřími displeji jsou čím dál oblíbenější a to i proto, že výrobci minimalizují jejich rámečky. Velké phablety jsou tak kompaktnější než kdy...  celý článek

Microsoft Lumia 950 XL
Microsoft připravil dárek pro nejvěrnější fanoušky mobilních Windows

Mobilní Windows už nejsou pro Microsoft prioritou, jejich vývoj ukončil. Přesto americký gigant vydal stejně jako pro počítače aktualizaci Fall Creators Update.  celý článek

Koncept iPhone 5X
Líbil by se vám malý bezrámečkový iPhone?

Kdyby se Apple nikdy nerozhodl pro velké iPhony a dál vyráběl kompaktní modely, možná právě takto by vypadala letošní speciální edice. Jeho podobu navrhlo...  celý článek

Nové ovládací centrum umožňuje přidávat další funkce.
Nový Android má extrémně málo smartphonů. U Applu je to úplně jinak

Díky tomu, že Apple si sám vyvíjí software i hardware, je aktualizace iPhonů a iPadů velmi snadná. Naopak Android má roztříštěnou základnu přístrojů od tisíců...  celý článek

Xiaomi Mi A1
Raketové Xiaomi. Superlevné mobily útočí i na Česko

Čínské Xiaomi po loňském oslabení letos očekává rekordní prodeje. Podle odhadů vedení by celkový objem vyexpedovaných smartphonů měl dosáhnout 90 milionů kusů....  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

Ilustrační snímek
Nikam nevolali, přesto mají platit tisíce. Oškubala je „astro aplikace“

Tváří se jako rozšíření oblíbené mobilní hry, ve skutečnosti však ukrývá škodlivý kód. Ten bez vědomí uživatele uskutečňuje hovory na audiotexové linky, které...  celý článek

Netradiční fotoaplikace Gudak vás donutí nad fotkami zase přemýšlet
Za 23 korun vám aplikace fotku z iPhonu ukáže až za tři dny

Vnímání fotografie se za posledních pár let výrazně změnilo. Díky záznamovým médiím již totiž nemusíme přemýšlet nad každým snímkem jako kdysi. Doby, kdy se...  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.