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).
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.
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.
První z nich 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.
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. |
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.
Ondřej Lavička
Stránka načtena za 0.00186 sekund.