/****************/ /* teht1_4.cpp */ /****************/ #include #include #include #include "teht1_4.h" //------------------------------------------------------------------------------ class TMainWindow : public TFrameWindow { TChooseFontDialog::TData FontinValinta; TChooseColorDialog::TData VarinValinta; TColor custColors[16]; TFont *fontti; public: TMainWindow(TWindow *Parent, LPCSTR ATitle) : TFrameWindow(Parent, ATitle){ fontti = new TFont(); FontinValinta.DC = 0; FontinValinta.Flags = CF_EFFECTS|CF_FORCEFONTEXIST|CF_SCREENFONTS; FontinValinta.Color = RGB(0,0,0); FontinValinta.Style = 0; FontinValinta.FontType = SCREEN_FONTTYPE; FontinValinta.SizeMin = 0; FontinValinta.SizeMax = 0; // FontinValinta.LogFont = system font ???? VarinValinta.Flags = CC_FULLOPEN|CC_RGBINIT; VarinValinta.Color = RGB(255,255,255); VarinValinta.CustColors = custColors; MoveWindow(100,100,400,400); AssignMenu("PAAMENU"); } ~TMainWindow() { if ( fontti ) delete fontti; } void Paint(TDC &hdc,bool, TRect &); int ValintaFontti(); int ValintaVari(); void CmValintaFontti() { ValintaFontti(); } void CmValintaVari() { ValintaVari(); } void CmValintaExit() { PostQuitMessage(0); } DECLARE_RESPONSE_TABLE(TMainWindow); }; DEFINE_RESPONSE_TABLE1(TMainWindow,TFrameWindow) EV_WM_PAINT, EV_COMMAND(CM_VALINTA_FONTTI, CmValintaFontti), EV_COMMAND(CM_VALINTA_VARI, CmValintaVari), EV_COMMAND(CM_VALINTA_EXIT, CmValintaExit), END_RESPONSE_TABLE; void TMainWindow::Paint(TDC &dc,bool, TRect &) { dc.SaveDC(); if ( fontti ) dc.SelectObject(*fontti); dc.SetTextColor(FontinValinta.Color); dc.TextOut(100,300,"Hello World!"); TBrush brVari(VarinValinta.Color); // Ehkä sama temppu kuin fontin kanssa dc.SelectObject(brVari); dc.Rectangle(100,100,200,200); dc.RestoreDC(); } int TMainWindow::ValintaVari() { if ( TChooseColorDialog(this,VarinValinta).Execute() != IDOK ) return 1; Invalidate(); return 0; } int TMainWindow::ValintaFontti() { if ( TChooseFontDialog(this,FontinValinta).Execute() != IDOK ) return 1; if ( fontti ) delete fontti; fontti = new TFont(&FontinValinta.LogFont); Invalidate(); return 0; } //------------------------------------------------------------------------------ class THelloApp : public TApplication { public: THelloApp(const char far *name = 0) : TApplication(name) {}; void InitMainWindow() { MainWindow = new TMainWindow(NULL, Name); } }; //------------------------------------------------------------------------------ int OwlMain(int ,char far * []) { return THelloApp("Kokeilu").Run(); } // virtual void SelectObject(const TFont& font); // TChooseFontDialog::TData Class