/****************/ /* taustaukko.cpp */ /****************/ // Ohjelma, joka aukaisee yhden ikkunan ja piirtää siihen taustakuvaksi tikku-ukon // (c) Tommi Lahtonen 1996 // Projektiin vain tämä tiedosto. OWL 5.0 #include // Owl 5.0:ssa owlpch.h => owl.h void Ukko(TDC &dc) { TBrush brRed(RGB(255,0,0)); dc.SelectObject(brRed); dc.Ellipse(40,40,80,80); // Pää punaisella sisustalla, musta raami dc.RestoreBrush(); TPen penBlue(RGB(0,0,255)); dc.SelectObject(penBlue); dc.MoveTo( 60, 80); dc.LineTo( 60,180); // Keskivartalo sinisellä TPen penGreen(RGB(0,255,0)); dc.SelectObject(penGreen); dc.LineTo( 20,260); // Vasen jalka dc.RestorePen(); // alkupeäinen musta kynä käyttöön dc.MoveTo( 60,180); dc.LineTo(100,260); // Oikea jalka mustalla dc.MoveTo( 20,170); dc.LineTo( 60, 90); // Vasen käsi dc.LineTo(120, 40); // Oikea käsi } int TaytaBittikartalla(HWND hWnd,HDC hDC,HBITMAP hBitmap) /* Täytetään koko alue bittikartalla */ { // Muuta OWL:ksi HDC hDCBitmap = CreateCompatibleDC(hDC); HGDIOBJ hOld = SelectObject(hDCBitmap,hBitmap); RECT rc; BITMAP bm; GetObject(hBitmap,sizeof(bm),&bm); GetClientRect(hWnd,&rc); StretchBlt(hDC,0,0,rc.right,rc.bottom,hDCBitmap, 0,0,bm.bmWidth,bm.bmHeight,SRCCOPY); SelectObject(hDCBitmap,hOld); DeleteDC(hDCBitmap); return 0; } //#include "tausta.rc" //------------------------------------------------------------------------------ class TMainWindow : public TFrameWindow { HBITMAP bitmap; // Muuta OWL bitmapiksi public: TMainWindow(TWindow *Parent, LPCSTR ATitle) : TFrameWindow(Parent, ATitle) { bitmap = NULL; } void Paint(TDC &dc,bool, TRect &) {} void EvDestroy() {DeleteObject(bitmap);PostQuitMessage(0);} bool EvEraseBkgnd(HDC hdc) {TaytaBittikartalla(*this,hdc,bitmap);return true;} void EvSize(uint sizeType, TSize& size) {Invalidate();} void SetupWindow() { TClientDC dc(*this); TMemoryDC dcMem(dc); RECT rc; rc = GetWindowRect(); bitmap = CreateCompatibleBitmap(dc, rc.right,rc.bottom); dcMem.SelectObject(bitmap); // PatBlt(hdcMem,0,0,rc.right,rc.bottom,WHITENESS); TBrush brYellow(RGB(255,255,0)); dcMem.SelectObject(brYellow); dcMem.Rectangle(GetClientRect()); Ukko(dcMem); } DECLARE_RESPONSE_TABLE(TMainWindow); }; DEFINE_RESPONSE_TABLE1(TMainWindow,TFrameWindow) EV_WM_DESTROY, EV_WM_PAINT, EV_WM_SIZE, EV_WM_ERASEBKGND, END_RESPONSE_TABLE; //------------------------------------------------------------------------------ class TApp : public TApplication { public: TApp(const char far *name = 0) : TApplication(name) {}; void InitMainWindow() { MainWindow = new TMainWindow(NULL, Name); } }; //------------------------------------------------------------------------------ int OwlMain(int ,char far * []) { return TApp("ukkotausta").Run(); }