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.

{<br />

return (MessageBox(HWindow, Ptr, "KONIEC",<br />

MB_YESNO | MB_ICONQUESTION) == IDYES);<br />

}<br />

Zajmiemy się teraz główną "maszynerią" programu. Rozbudujemy<br />

obsługę komunikatów przez handlery zaimplenmentowane w klasie<br />

Główne_Okno.<br />

_CLASSDEF(TGOkno)<br />

class TGOkno : public TWindow<br />

{<br />

public:<br />

HDC dc;<br />

BOOL ButtonDown;<br />

BOOL Flaga_Start;<br />

TGOkno(PTWindowsObject AParent, LPSTR ATitle);<br />

//Konstruktor<br />

virtual void WMLButtonDown(RTMessage Msg)<br />

= [WM_FIRST + WM_LBUTTONDOWN];<br />

virtual void WMLButtonUp(RTMessage Msg)<br />

= [WM_FIRST + WM_LBUTTONUP];<br />

virtual void WMMouseMove(RTMessage Msg)<br />

= [WM_FIRST + WM_MOUSEMOVE];<br />

virtual void WMRButtonDown(RTMessage Msg)<br />

= [WM_FIRST + WM_RBUTTONDOWN];<br />

virtual BOOL CanClose();<br />

};<br />

Konstruktor przekazuje parametry do konstruktora klasy bazowej i<br />

zeruje flagę ButtonDown - lewy klawisz myszki przyciśnięty.<br />

TGOkno::TGOkno(PTWindowsObject AParent, LPSTR ATitle)<br />

: TWindow(AParent, ATitle)<br />

{<br />

ButtonDown = FALSE;<br />

}<br />

Funkcja obsługująca zdarzenie WM_LBUTTONDOWN jeden raz inicjuje<br />

obsługę myszki i ustawia flagę. Funkcje SetCapture() i GetDC()<br />

załatwiją problem relacji kontekstowych i określają obszar<br />

roboczy (client area). Jeśli umieścimy te funkcje w<br />

konstruktorze za obszar client area uznany zostanie cały ekran.<br />

Po zadziałaniu tych funkcji komunikaty od myszki będą dotyczyć<br />

wyłącznie obszaru roboczego. Do naciśnięcia prawego klawisza nie<br />

będzie dostępu do "ramki" okna.<br />

void TGOkno::WMLButtonDown(RTMessage Msg)<br />

{<br />

if (!Flaga_Start)<br />

{<br />

- 439-

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

Saved successfully!

Ooh no, something went wrong!