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ší

Samsung Galaxy S8
Samsung S8+ v prodeji i ve verzi pro dvě SIM. Jeden slot je kombinovaný

Samsung začal na českém trhu oficiálně prodávat dvousimkovou verzi svého top modelu Galaxy S8+. Ovšem řešení neumožní používat dvě SIM a paměťovou kartu...  celý článek

Počet objednávek na Galaxy S8 předčil dosavadní rekord předchůdce o 30 procent
Hlasový asistent Bixby vám poslouží i v Česku. Pokud mluvíte anglicky

Samsung uvolnil svého hlasového asistenta i na český trh, stále však umí jen anglicky a korejsky.  celý článek

Apple iPhone 6 a iPhone 6 Plus
Apple vyprodává iPhony. Už stačí necelých 10 tisíc i na velký model

Apple v nejbližší době představí nové iPhony. Aby vyprázdnil sklady, vyprodává starší modely. V Česku tak tento týden klesla cena modelu 6 pod 10 tisíc korun.   celý článek

TP-Link Neffos X1 Max
Vyrábí hlavně routery, teď se vrhli na smartphony. A docela jim to jde

Při pohledu na značku TP-Link si mnoho z nás vzpomene na logo na domácím routeru, ovšem asi málokdo si ji spojí se smartphonem. To se však může brzy změnit,...  celý článek

Vodafone (ilustrační fotografie)
Tlačili nás do dražších tarifů, stěžují si zákazníci Vodafonu u ČTÚ

Český telekomunikační úřad obdržel v souvislosti se zrušením Fér tarifů řadu stížností od zákazníků Vodafonu. Operátor jim sice nabídl přechod na nové tarify,...  celý článek

Další z rubriky

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

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 Donald Draw: Executive Doodle umožní vytvořit (nejen) vlastní...
Vžijte se do kůže Donalda Trumpa. Vytvořte vlastní exekutivní příkaz

V aplikačních obchodech lze vybírat z nepřeberného množství mobilních aplikací, od užitečných až po zábavné. Do druhé kategorie spadají vesměs i aplikace,...  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.