16.05.2015 Views

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

eak;<br />

default: /* wariant domyślny: standardowa obsługa<br />

.... przez standardową funkcję Windows */<br />

}<br />

}<br />

________________________________________________________________<br />

UWAGA:<br />

Ponieważ komunikatów "interesujących" daną aplikację może być<br />

ponad 100 a sposobów reakcji użytkownika jeszcze więcej, w<br />

"poważnych" aplikacjach tworzone są często struktury decyzyjne o<br />

większym stopniu złożoności. Jeśli istnieje potrzeba<br />

optymalizacji działania programów stosuje się struktury dwu<br />

typów:<br />

* hierarchia wartości (Value Tree) i<br />

* drzewo analizy zdarzeń (Event Tree).<br />

Utworzone w taki sposób tzw. "Drzewo decyzyjne" nazywane także<br />

"Drzewem analizy zdarzeń" może być wielopoziomowe. Widoczny<br />

powyżej pierwszy poziom drzewa (pierwszy przesiew) realizowany<br />

jest zwykle przy pomocy instrukcji switch a następne przy pomocy<br />

drabinek typu if-else-if-break. Schemat if-else-if-break często<br />

bywa zastępowany okienkami dialogowymi.<br />

________________________________________________________________<br />

Parametry wParam i lParam przechowują parametry istotne dla<br />

danego komunikatu. wParam ma długość pojedynczego słowa (word) a<br />

lParam ma długość podwójnego słowa (long). Jeśli, dla przykładu,<br />

okno zostało przesunięte, te parametry zawierają nowe<br />

współrzędne okna.<br />

Jeżeli program ma być programem zdarzeniowym, powinniśmy przed<br />

podjęciem jakiejkolwiek akcji zaczekać aż Windows przyślą nam<br />

komunikat o tym, jakie zdarzenie nastąpiło. Wewnątrz Windows<br />

tworzona jest dla komunikatów kolejka (ang message queue).<br />

Dzięki istnieniu kolejkowania otrzymujemy komunikaty pobierane z<br />

kolejki pojedynczo. Jeśli użytkownik przesunie okno a następnie<br />

przyciśnie klawisz, to Windows wywołają funkcję WindowProc()<br />

najpierw z parametrem WM_MOVE a następnie z parametrem<br />

WM_KEYDOWN.<br />

Jednym z najważniejszych zadań funkcji WinMain() jest utworzenie<br />

kolejki dla komunikatów i poinformowanie Windows, że komunikaty<br />

do naszego programu należy kierować pod adresem funkcji<br />

WindowProc(). W tym celu stosuje się daleki wskaźnik do<br />

procedury okienkowej lpfn (Long Pointer to Function). Poza tym<br />

funkcja WinMain() tworzy okno (okna) i wyświetla je na ekranie w<br />

pozycji początkowej. Kiedy program zostaje po raz pierwszy<br />

załadowany i uruchomiony - Windows najpierw wywołują funkcję<br />

- 380-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!