Premium

Získejte všechny články
jen za 89 Kč/měsíc

Programování PocketPC naruby (8/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 instalaci a spuštění programu.

Minulý díl našeho seriálu Programování naruby jsme věnovali uživatelskému rozhraní. Dnes se blíže podíváme na instalaci prostředí a první spuštění programu. 

Po úspěšném naprogramování aplikace ji zkusíme přenést na kapesní počítač. Oba dva operační systémy mají z hlediska programátora tolik společných vlastností, že nepůjde o velký problém.

Instalace prostředí

Na webových stránkách společnosti Microsoft jsou v současnosti dostupné dvě verze vývojového prostředí pro platformu Pocket PC 2002 - Embedded Visual Tools 3.0 a 4.0 (.NET). V této kapitole si popíšeme stažení, instalaci a práci se starším z těchto vývojových prostředí, Embedded Visual C++ 3.0. To stáhnete zdarma ze stránek společnosti Microsoft z adresy http://msdn.microsoft.com/mobility/downloads/

Nejprve přejděte do sekce "Products and Updates"

Na stránce zvolte, že si přejete stáhnout "Embedded Visual Tools 3.0"

.. a dostanete se na následující stránku, kde je vám nabídnut soubor ke stažení.

Klikněte na tlačítko označené "Download", potvrdte smlouvu se společností Microsoft a stáhněte asi 215 MB velký instalační soubor. Vývojové prostředí je možné instalovat do podadresáře ve složce C:\Program Files\Microsoft eMbedded Tools\. Až se vás instalační program zeptá na sériové číslo, zadejte následující:

TRT7H-KD36T-FRH8D-6QH8P-VFJHQ

Pro psaní programů pro operační systém Pocket PC 2002 nebudete potřebovat žádné další soubory, ani programovací jazyk Visual Basic. Později si můžete ze stejné stránky stáhnout i kompilátory pro Windows CE 3.0 a Pocket PC 2000.

Chcete-li psát programy pro nejnovější verzi operačního systému Windows CE - Pocket PC 2003 (.NET), budete potřebovat vývojové prostředí Embedded Visual C++ 4.0, které je možné stáhnout podobným postupem ze stránek společnosti Microsoft.

Nový projekt

Prostředí Embedded Visual C++ 3.0 je stejné, na jaké jste zvyklí například z Visual C++ nebo jiných produktů firmy Microsoft. Vlevo nahoře je pohled na stromovou strukturu projektu, napravo nahoře okno pro editaci zdrojového textu a pod nimi okno pro výpis nalezených souborů, hlášení chyb při překladu a podobně.

Vytvořte nový projekt (WCE PPC 2002 Application), vyberte adresář a zvolte, že chcete vytvořit jednoduchou Windows CE aplikaci (A simple Windows CE application).

Prostředky a pomocné objekty

Při zobrazení ikony aplikace v nabídce programů vybírají Windows CE automaticky ikonu s nejnižším pořadovým číslem. Proto jako první vždy doplňte do projektu ikonu aplikace - nezapomeňte, že musí obsahovat dva obrázky - velký (32 x 32 bodů) pro nabídku programů a malý (16 x 16 bodů) pro uvedení aplikace v malém menu aplikací.

Popis prostředků aplikace, který používá Microsoft Visual C++ 6.0 pro operační systém Windows 98/2000/XP se v některých detailech liší od popisu, který používá prostředí Embedded Visual C++ 3.0. Proto doporučuji doplnit ikony a menu ručně (nesmíme zapomenout stejně pojmenovat identifikátory).

Oba dva pomocné objekty - Storage pro uložení dat a MyRegistryKey pro jednoduchý přístup do registru, můžete beze změny použít ve vaší aplikaci pro PocketPC. Její překlad by měl proběhnout bez chyb - typ TCHAR má nyní velikost dva byte, ale vzhledem ke korektní inicializaci všech textových konstant pomocí makra TEXT je vše v pořádku.

První spuštění a co bylo špatně

Nyní se pokusíme naši aplikaci beze změny přeložit pro počítače s operačním systémem Pocket PC a spustit v emulátoru. Překvapivě se při překladu objeví pouze tři chyby:


C:\My Documents\PocketPC\myprog\list\ppc0\list.cpp(191) : error C2731: 'WinMain' : function cannot be overloaded
        C:\My Documents\PocketPC\myprog\list\ppc0\list.cpp(187) : see declaration of 'WinMain'
C:\My Documents\PocketPC\myprog\list\ppc0\list.cpp(210) : error C2065: 'CS_CLASSDC' : undeclared identifier
C:\My Documents\PocketPC\myprog\list\ppc0\list.cpp(226) : error C2065: 'WS_OVERLAPPEDWINDOW' : undeclared identifier

Opravíme hlavičku funkce WinMain - přepíšeme typ argumentu z LPSTR (Windows) na LPTSTR (Windows CE) a podíváme se na druhé dvě chyby.


WNDCLASS wc = {   CS_CLASSDC|CS_VREDRAW|CS_HREDRAW,
                  MainWindowProc,
                  0, 0,
                  g_hInstance,
                  LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_PROGRAM)),
                  LoadCursor(NULL, IDC_ARROW),
                  (HBRUSH)(COLOR_WINDOW + 1),
                  MAKEINTRESOURCE(IDR_MENU),
                  g_szClass };

První z nic se týká vytvoření nové třídy okna; konstanta CS_CLASSDC, která nastavuje společný Device context (nastavení pro vykreslování grafiky) pro všechna okna dané třídy, není definována. Když se nad inicializací struktury WNDCLASS zamyslíme, můžeme z ní vypustit všechno, co nebudeme na Pocket PC potřebovat - překreslování okna při horizontálním a vertikálním pohybu, ikonu, kursor myši a menu.


WNDCLASS wc = {   0,
                  MainWindowProc,
                  0, 0,
                  g_hInstance,
                  NULL,
                  NULL,
                  (HBRUSH)(COLOR_WINDOW + 1),
                  NULL,
                  g_szClass };

Druhá změna se týká vytvoření okna. Ani konstanta WM_OVERLAPPEDWINDOW není definována. Prohlédneme-li si tabulku vlastností, které operační systém Windows CE podporuje, vidíme, že jediná kombinace stylů, která pro nás má smysl, je WS_VISIBLE a WS_CLIPCHILDREN.

Styl Význam
WS_BORDER Okno je ohraničené (nepoužíváme, protože okna na PocketPC zaujímají celou plochu displeje).
WS_CAPTION Okno má nadpis s titulkem. Tuto vlastnost nepoužijeme, protože nadpis okna je v horním proužku na displeji a nevytváříme okno se zvláštním titulkovým pruhem.
WS_CHILD Okno je potomkem jiného okna. Tuto vlastnost hlavní okno aplikace nepotřebuje.
WS_CLIPCHILDREN Není překreslována oblast pod potomky tohoto okna.
WS_CLIPSIBLINGS Pokud se potomci překrývají, není překrývající se oblast vykreslována.
WS_DLGFRAME Okno dialogu.
WS_HSCROLL, WS_VSCROLL Okno má horizontální nebo vertikální posuvník.
WS_OVERLAPPED Okno má titulek a okraj. Obojí by zbytečně zabíralo místo na displeji.
WS_POPUP Vyskakovací (Popup) okno.
WS_SYSMENU Okno má v titulkovém pruhu systémové menu.
WS_TABSTOP, WS_GROUP, WS_DISABLED Pro prvky dialogu - dostupnost pomocí tabulátoru, první prvek dialogu ze skupiny a prvek neinteragující s uživatelem.
WS_VISIBLE Okno je po vytvoření zobrazeno.

hwndMain = CreateWindowEx( 0,
                    g_szClass, szName,
                    WS_VISIBLE|WS_CLIPCHILDREN,
                    CW_USEDEFAULT, CW_USEDEFAULT,
                    CW_USEDEFAULT, CW_USEDEFAULT,
                    NULL,
                    NULL,
                    hInstance,
                    NULL);

Po opravení těchto dvou chyb můžeme aplikaci přeložit a spustit v emulátoru. Už na první pohled vidíme, že výsledek není zcela ideální. Hlavní okno aplikace zabírá celý displej. Pomocí klávesnice můžeme pracovat i s položkami seznamu. Kopie displeje emulátoru jsou na následujících dvou obrázcích:

 

Podrobné analýze toho, co musíme do naší aplikace doplnit se budeme věnovat v následujících dílech.

Zde můžete stáhnout zdrojové texty (ZIP) programu pro Windows 98/2000, přetažené do Embedded Visual C++ 3.0.
  • Nejčtenější

Spotem s Trojanem na horách operátor popudil Poláky. Nerozuměli nadsázce

21. dubna 2024  8:01

Po dvojici Vojtěch Kotek a Lukáš Pavlásek, k níž později přibyl Jakub Kohák, vsadil T-Mobile ve...

Je to už spíš foťák s mobilem a opravdu se povedl. Test Xiaomi 14 Ultra

21. dubna 2024

Prémiový smartphone Xiaomi 14 Ultra působí mezi současnou nabídkou mobilů jako unikát. Jaký jiný...

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

Toto zařízení mělo nahradit mobily. V recenzích se mu vysmáli

23. dubna 2024

Novinka s názvem Humane AI Pin se zdála být převratným zařízením. V mnoha ohledech měla nahradit...

Vodafone měl výpadek, někteří zákazníci se nemohli dovolat

25. dubna 2024  10:03,  aktualizováno  10:15

Síť mobilního operátora Vodafone postihl ráno výpadek. Týkal se části zákazníků, kteří se nemohli...

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

Operátoři zahušťují pokrytí Česka signálem 5G. Máte ho doma? Podívejte se

20. dubna 2024

Premium V červenci to budou již čtyři roky, co byla v Česku spuštěna první komerční 5G síť. Zatímco v...

Xiaomi už se nebude držet zpátky. Pro řadu T chystá další prémiové funkce

26. dubna 2024

Smartphony řady T od Xiaomi mají vždy parádní výbavu, ale zároveň i pár kompromisů, aby trochu...

Vodafone měl výpadek, někteří zákazníci se nemohli dovolat

25. dubna 2024  10:03,  aktualizováno  10:15

Síť mobilního operátora Vodafone postihl ráno výpadek. Týkal se části zákazníků, kteří se nemohli...

Toto mohl být nevídaný smartphone. Myšlenku však nakonec poslali k vodě

25. dubna 2024

S takovým smartphonem bychom už nikdy nemuseli řešit, že se zpomaluje, nemá dostatek paměti či je...

Samsung má povedenou stylovku. Zkusí to s ní na trhu, kde se mu nedaří

24. dubna 2024

Samsung po velmi dlouhé době oprášil modelovou řadu Galaxy C a představil stylový smartphone se...

Akční letáky
Akční letáky

Prohlédněte si akční letáky všech obchodů hezky na jednom místě!

Bývalý fitness trenér Kavalír zrušil asistovanou sebevraždu, manželka je těhotná

Bývalý fitness trenér Jan Kavalír (33) trpí osmým rokem amyotrofickou laterální sklerózou. 19. dubna tohoto roku měl ve...

Herečka Hunter Schaferová potvrdila románek se španělskou zpěvačkou

Americká herečka Hunter Schaferová potvrdila domněnky mnoha jejích fanoušků. A to sice, že před pěti lety opravdu...

Největší mýty o zubní hygieně, kvůli kterým si můžete zničit chrup

Možná si myslíte, že se v péči o zuby orientujete dost dobře, přesto v této oblasti stále ještě existuje spousta...

Tenistka Markéta Vondroušová se po necelých dvou letech manželství rozvádí

Sedmá hráčka světa a aktuální vítězka nejprestižnějšího turnaje světa Wimbledonu, tenistka Markéta Vondroušová (24), se...

Za vytlačení z linky do Brna musí Student Agency zaplatit náhradu 21 milionů

Společnost Student Agency provozující autobusy a vlaky pod označením RegioJet musí zaplatit bývalému konkurentovi 21...