Text zobrazený v okně aplikace je zatím omezen na 15 řádků a počátek jeho umístění jsme stanovili odhadem. Můžeme se tedy pustit do úprav těchto hodnot.
Pro stanovení velikosti okna je velmi vhodná zpráva WM_SIZE, která je volána vždy, když se změní velikost okna. Její význam je nesporný u Windows 95 a vyšších, kde může často docházet k přesouvání či změně velikosti programového okna. U kapesních počítačů je obrazovka natolik malá, že se nepočítá s umístěním více oken aplikací současně na plochu.Přesto zpráva WM_SIZE i ve Windows CE funguje.
I když tato zpráva přináší ve svém parametru lParam velikost okna, pro náš účel bude vhodné uložit si celé souřadnice klientské části okna do proměnné typu obdélník rctKlient. Podobně jako u programu Nazdar v minulé kapitole si stejným způsobem zjistíme souřadnice okna. Do procedury okna WndProc vložíme zpracování zprávy WM_SIZE:
Protože jsme aplikaci založili jako WCE (pro Windows CE 2.11), je nabídkový pruh, který je součástí klientské oblasti, na horní straně okna (u Pocket PC aplikace je dole). Na druhém řádku je proto horní souřadnice okna upravena o šířku nabídkového pruhu získanou funkcí CommandBar_Height (u Pocket PC aplikace je nutno odečíst od spodní souřadnice).
Při programování pro Windows CE počítače je dobré mít na paměti, že variabilita přístrojů a možnosti použití tohoto systému jsou široké. V následující tabulce jsou pro příklad uvedeny některé hodnoty souřadnic oken, které je možné získat na různých přístrojích.
Přístroj | PalmPC | HPC Pro | PocketPC | PocketPC |
Program vytvořen jako aplikace | WCE | WCE | WCE | PocketPC |
Klient.horní | 0 | 0 | 0 | 0 |
Klient.dolní | 294 | 454 | 294 | 294 |
Menu.horní | 0 | 0 | 26 | 294 |
Menu.dolní | 24 | 24 | 50 | 320 |
Velikost okna vertikálně | 294 | 454 | 294 | 294 |
Velikost okna horizontálně | 240 | 640 | 240 | 240 |
Výška menu | 24 | 24 | 24 | 294 |
Pozn.: Souřadnice klientské oblasti (Klient) získány funkcí GetClientRect(hWnd,...)
Souřadnice Nabídkového pruhu (Menu) získány funkcí GetWindowRect(hwndCB,...)
Velikost okna získána z parametru lParam zprávy WM_SIZE
Výška menu - nabídkového pruhu - získána z CommandBar_Height(hwndCB)
Z tabulky je vidět, že univerzálně připravený program musí počítat s různými souřadnicemi oken, se kterými pracuje. Také lze v tabulce nahlédnout, že funkce CommandBar_Height v aplikaci pro Pocket PC nepracuje zcela korektně. Pokud by jste ji chtěli využívat, je možné si vytvořit vlastní funkci např. takto:
Máme připravené rozměry klientské části okna, můžeme tedy opravit odhadnutý počet řádků vypisovaných na obrazovce na reálnou hodnotu. V minulém díle jsme si do proměnné nVyskaRadku uložili výšku fontu, který používáme. Snadno spočítáme:
Počet řádků je zvýšen o 1, protože při celočíselném dělení může být část řádku
"ukryta" ve zbytku dělení. Při vypisování na obrazovku Windows za nás přesahující
část automaticky oříznou.
Jelikož jsme horní hranu klientské oblasti spočítali přesně, můžeme zrušit
náš původní odhad ve zprávě WM_CREATE. Zrušte v ní řádek
Výsledek zpracování zprávy WM_SIZE vypadá takto:
Program můžeme přeložit a spustit. Na obrazovce by mělo být něco podobného jako na tomto obrázku:
Stránka načtena za 0.00188 sekund.