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.

LEKCJA 40. JAK TWORZY SIĘ APLIKACJĘ DLA Windows?<br />

________________________________________________________________<br />

W trakcie tej lekcji dowiesz się, jak "poskładać" aplikację dla<br />

Windows z podstawowych funkcji interfejsu API i jakie komunikaty<br />

są najważniejsze dla naszych aplikacji.<br />

________________________________________________________________<br />

Przy tworzeniu programu zwróćmy szczególną uwagę na to, co<br />

dzieje się w programie po otrzymaniu komunikatu WM_PAINT (należy<br />

narysować okno). Jest to żądanie ze strony Windows, by program<br />

narysował obszar roboczy (client area) swojego okna. Program<br />

otrzyma komunikat WM_PAINT zawsze na początku, kiedy powinien<br />

narysować swoje okno po raz pierwszy i później powtórnie, za<br />

każdym razem, gdy trzeba będzie odtworzyć okno na ekranie. Jeśli<br />

inne okno przesuwane po ekranie przysłoni okno naszego programu,<br />

po odsłonięciu naszego okna Windows prześlą do programu<br />

komunikat WM_PAINT - odtwórz swoje okno - narysuj go powtórnie<br />

(redraw, repaint). Jeśli zechcemy wyprowadzić na ekran napis<br />

"Hello World" także będziemy musieli narysować okno od nowa. Nie<br />

zawsze "odświeżenia" wymaga całe okno. W każdej z sytuacji:<br />

- całe okno zostało przysłonięte i odsłonięte<br />

- część okna wymaga odświeżenia<br />

- okno jest rysowane po raz pierwszy<br />

Windows prześlą do programu ten sam komunikat - WM_PAINT.<br />

Jeśli odtworzenia wymaga tylko część okna, taka część okna<br />

nazywa się nieważną-nieaktualną (ang. invalid). W Windows takie<br />

nieaktualne fragmenty okna zawsze mają kształt prostokątów.<br />

Wyobraźmy sobie, że jakieś inne okno przesłoniło narożnik okna<br />

naszego programu. Jeśli użytkownik usunie to przesłaniające<br />

okno, odsłonięty obszar będzie potraktowany przez Windows jako<br />

nieaktualny. Windows prześlą do aplikacji komunikat WM_PAINT<br />

żądający odtworzenia okna. Żądając odtworzenia okna Windows<br />

powinny nas poinformować która część naszego okna została na<br />

ekranie "zepsuta". Współrzędne prostokąta na ekranie Windows<br />

przekażą przy pomocy specjalnej struktury nazywanej strukturą<br />

rysunku (ang. paint structure - PAINTSTRUCT).<br />

Strukturę rysunku możemy nazwać w programie np.:<br />

PAINSTRUCT ps;<br />

W funkcji WindowProc() obsługa komunikatu WM_PAINT rozpoczyna<br />

się od wyczyszczenia pól struktury rysunku ps. Struktura<br />

predefiniowanego typu PAINTSTRUCT (w WINDOWS.H) zawiera<br />

informacje o rysunku.<br />

PAINTSTRUCT ps;<br />

{<br />

switch (Message)<br />

{<br />

case WM_CREATE:<br />

..... break;<br />

case WM_MOVE:<br />

- 384-

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

Saved successfully!

Ooh no, something went wrong!