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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

FUNKCJE WinMain() i WindowProc().<br />

W programach pisanych w standardowym C dla Windows używane są<br />

dwie najważniejsze funkcje: WinMain() i WindowProc().<br />

________________________________________________________________<br />

UWAGA:<br />

Funkcji WindowProc() można nadać dowolną nazwę, ale WinMain()<br />

musi się zawsze nazywać WinMain(). Jest to nazwa zastrzeżona<br />

podobnie jak main() dla aplikacji DOSowskich.<br />

________________________________________________________________<br />

Funkcja WinMain() powoduje utworzenie okna programu umożliwiając<br />

zdefiniowanie i zarejestrowanie struktury "okno" (struct<br />

WNDCLASS) a następnie powoduje wyświetlenie okna na ekranie. Od<br />

tego momentu zarządzanie przejmuje funkcja WindowProc(). W<br />

typowej proceduralno - zdarzeniowej aplikacji dla Windows to<br />

właśnie funkcja WindowProc() obsługuje pobieranie informacji od<br />

użytkownika (np. naciśnięcie klawisza lub wybór z menu). Funkcja<br />

WindowProc() robi to dzięki otrzymywaniu tzw. komunikatów (ang.<br />

Windows message).<br />

W Windows zawsze po wystąpieniu jakiegoś zdarzenia (event)<br />

następuje przesłanie komunikatu (message) o tym zdarzeniu do<br />

bieżącego aktywnego w danym momencie programu w celu<br />

poinformowania go, co się stało. Jeśli został naciśnięty<br />

klawisz, komunikat o tym zdarzeniu zostanie przesłany do funkcji<br />

WindowProc(). Tak funkcjonuje interfejs pomiędzy aplikacją a<br />

Windows. W programach tworzonych w C prototyp funkcji<br />

WindowProc() wygląda następująco:<br />

LONG FAR PASCAL WindowProc(HWND hWnd, WORD Message,<br />

WORD wParam, LONG lParam);<br />

Słowa FAR i PASCAL oznaczają, że:<br />

FAR - kod funkcji znajduje się w innym segmencie niż kod<br />

programu;<br />

PASCAL - kolejność odkładania argumentów na stos - odwrotna (jak<br />

w Pascalu).<br />

________________________________________________________________<br />

UWAGA:<br />

Prototyp funkcji może zostać podany również tak:<br />

LONG FAR PASCAL WndProc(HWND, unsigned, WORD, LONG);<br />

________________________________________________________________<br />

- 377-

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

Saved successfully!

Ooh no, something went wrong!