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.

Górny lewy róg nieaktualnego prostokąta (invalid rectangle) ma<br />

dwie współrzędne (left, top) a dolny prawy róg prostokąta ma<br />

współrzędne (right, bottom). Te współrzędne ekranowe mierzone są<br />

w pikselach i są to współrzędne względne - względem lewego<br />

górnego narożnika okna aplikacji. Lewy górny narożnik okna<br />

aplikacji ma więc współrzędne (0,0).<br />

Zwróćmy uwagę na wartość zwracaną przez funkcję BeginPaint() -<br />

zmienną hDC:<br />

case WM_PAINT:<br />

memset(&ps, 0x00, sizeof(PAINTSTRUCT));<br />

hDC = BeginPaint(hWnd, &ps);<br />

....<br />

Wszystnie operacje graficzne będą wymagać nie kodu okna hWnd a<br />

właśnie kodu-identyfikatora kontekstowego hDC.<br />

Na początku pracy programu, gdy okno jest rysowane po raz<br />

pierwszy, Windows generują komunikat WM_PAINT i cały obszar<br />

roboczy okna jest uznawany za nieaktualny. Kiedy program otrzyma<br />

ten pierwszy komunikat, możemy wykorzystać to do umieszczenia w<br />

oknie np. napisu. Jeśli tekst ma rozpoczynać się od lewego<br />

górnego narożnika okna aplikacji, funkcja TextOut() używana w<br />

Windows do wykreślania tekstu (w trybie graficznym) powinna<br />

rozpoczynać wyprowadzanie tekstu od punktu o (pikselowych)<br />

współrzędnych (0,0).<br />

case WM_PAINT:<br />

...<br />

TextOut(hDC, 0, 0, (LPSTR) "Tekst", strlen("Tekst"));<br />

EndPaint(hWnd, &ps);<br />

break;<br />

Funkcja TextOut() (wyprowadź tekst) pobiera pięć parametrów:<br />

hDC - identyfikator-kod prostokąta, który należy narysować<br />

x - współrzędna pozioma (w pikselach)<br />

y - współrzędna pionowa początku naszego napisu<br />

W tym przypadku współrzędne wynoszą (0,0).<br />

LPSTR - wskaźnik do łańcucha znaków "Hello world."<br />

LPSTR = long pointer to string (wskaźnik typu far).<br />

Wskaźnk ten przekazujemy do funkcji poprzez forsowanie typu:<br />

... (LPSTR) "Tekst";<br />

Zgodnie z definicją typu w pliku WINDOWS.H spowoduje to zamianę<br />

wskaźnika do łańcucha typu near char* (bliski) na wskaźnik typu<br />

far (daleki). Ostatni parametr funkcji to długość wyprowadzanego<br />

tekstu - tu obliczana przez funkcję strlen().<br />

Prześledźmy etapy powstawania aplikacji.<br />

- 386-

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

Saved successfully!

Ooh no, something went wrong!