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

O2 mění identitu. Vrací se 26 let starý legendární slogan předchůdce

30. dubna 2024  14:13

Operátor O2 se bude prezentovat trochu jinak než doteď. Změna je to spíš evoluční, ale rozdílů si...

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...}

Huawei šokuje novým supersmartphonem s vysouvacím fotoaparátem

1. května 2024  7:02

Huawei představil novou řadu Pura, která nahrazuje dřívější řadu P. Mezi novinkami z nové řady je i...

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...

{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...}

Váš iPhone může být hacknut, varuje Apple uživatele v desítkách zemích

27. dubna 2024

Jednotlivci z řad uživatelů iPhonů z více než devadesáti zemí světa obdrželi ve středu 10. dubna od...

V tomto centru monitorují kybernetické hrozby. Ty nejhorší řeší v třetí řadě

2. května 2024

Na první pohled to zde vypadá jako v jakémkoli jiném řídicím centru. Ze spousty monitorů na...

Huawei šokuje novým supersmartphonem s vysouvacím fotoaparátem

1. května 2024  7:02

Huawei představil novou řadu Pura, která nahrazuje dřívější řadu P. Mezi novinkami z nové řady je i...

Nová sluchátka od neotřelého výrobce smartphonů zaujmou nejenom designem

1. května 2024

Výrobce Nothing chce být především designovou ikonou, a to jak v oblasti smartphonů, tak i dalšího...

O2 mění identitu. Vrací se 26 let starý legendární slogan předchůdce

30. dubna 2024  14:13

Operátor O2 se bude prezentovat trochu jinak než doteď. Změna je to spíš evoluční, ale rozdílů si...

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

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

Natáčení Přátel bylo otřesné, vzpomíná herečka Olivia Williamsová

Britská herečka Olivia Williamsová (53) si ve čtvrté sérii sitcomu Přátelé zahrála epizodní roli jedné z družiček na...

Byli vedle ní samí ztroskotanci, vzpomíná Basiková na muže Bartošové

Byly každá z jiného těsta, ale hlavně se pohybovaly na opačných pólech hudebního spektra. Iveta Bartošová byla...

Autofotka: Sen z plakátů v kotrmelcích. Mladíček v tunelu rozbil Ferrari F40

Symbol italské nenažranosti se již skoro čtyři dekády pokouší zabít své řidiče. Jízda s Ferrari F40 bez posilovače...

Ukaž kozy, řvali na ni. Potřebovala jsem se obouchat, vzpomíná komička Macháčková

Rozstřel Pravidelně vystupuje v pořadu Comedy Club se svými stand-upy, za knihu Svatební historky aneb jak jsem se nevdala se...

Do Bolívie jsem odešla kvůli smrti rodičů, přiznala sestra Romana Vojtka

Mladší sestra herce Romana Vojtka (52) Edita Vojtková (49) je módní návrhářkou a žije v Bolívii. Do zahraničí odešla...