/****************/ /* laskurm4.cpp */ /****************/ // Esimerkki Autolaskurista. // Projektiin // laskurm4.cpp // doclask.cpp // ALI\clipboar.c // ALI\mjonot.c // laskurm4.rc // // Kopioi hakemistoon ..\kuvat tiedosto laskurir.ico ja // suomi.bmp, englanti.bmp, ruotsi.bmp, monalisa.bmp, hauto.bmp, kauto.bmp // Lisäksi tarvitaan ALI\owl\intlabel.h // // Tehtäviä: // 1) Lisää ruotsin kieli (tai savon :-) // 2) Laita kielen valinnat myös menuun siten, että kustakin kielestä // on menussa oma lippu // // #include "doclask.h" //#define VLTAUSTA #ifdef VLTAUSTA #include "tausta.h" #endif //------------------------------------------------------------------------------ class TLaskuri4Dialog : public TLaskuriDialog { //------------------------------------------------------------------------------ int kieli; char skieli[10]; int ikielinro; public: TLaskuri4Dialog(TLaskuriDocument& doc, TWindow* parent = 0) : TLaskuriDialog(doc, parent) { kieli=1; //01234567 kopioi_jono(N_S(skieli),"KIELI_1"); ikielinro = 6; } virtual ~TLaskuri4Dialog() { } bool EvEraseBkgnd(HDC hdc); void EvDrawItem(uint ctrlId, DRAWITEMSTRUCT far& drawInfo); void BtnKieli() { HMENU menu=GetModule()->LoadMenu(skieli); Parent->SetMenu(menu); kieli++; if ( kieli > 1 ) kieli = 0; skieli[ikielinro] = char(kieli+'0'); ::InvalidateRect(GetDlgItem(ID_LANGUAGE),NULL,true); } DECLARE_RESPONSE_TABLE(TLaskuri4Dialog); }; DEFINE_RESPONSE_TABLE1(TLaskuri4Dialog, TLaskuriDialog) EV_BN_CLICKED(ID_LANGUAGE,BtnKieli), EV_WM_DRAWITEM, EV_WM_ERASEBKGND, END_RESPONSE_TABLE; void TLaskuri4Dialog::EvDrawItem(uint ctrlId, DRAWITEMSTRUCT far& drawInfo) { if ( ctrlId != ID_LANGUAGE ) return; TDC dc(drawInfo.hDC); TBitmap BitBack(*this->GetModule(),skieli); TMemoryDC memDC(dc); memDC.SelectObject(BitBack); dc.StretchBlt(0,0,drawInfo.rcItem.right,drawInfo.rcItem.bottom,memDC, 0,0,BitBack.Size().cx,BitBack.Size().cy, SRCCOPY); } bool TLaskuri4Dialog::EvEraseBkgnd(HDC hdc) { #ifdef VLTAUSTA HBITMAP hBitBack = LoadBitmap(*this->GetModule(),"TAUSTA"); PiirraBittikartta(hdc,hBitBack,0,0); DeleteObject(hBitBack); #else TDC dc(hdc); TBitmap BitBack(*this->GetModule(),"TAUSTA"); TMemoryDC memDC(dc); memDC.SelectObject(BitBack); dc.BitBlt(0,0,BitBack.Size().cx,BitBack.Size().cy,memDC,0,0,SRCCOPY); #endif return true; } //------------------------------------------------------------------------------ // Luodaan dokumentin käsittelijä LASKURIVIEW(TLaskuri4Dialog) //------------------------------------------------------------------------------ class TLaskuri4App : public TLaskuriApp { public: TLaskuri4App(const char *title) : TLaskuriApp(title,"Kieli_0") //,"Kieli_1") {} protected: // void CmHelpAbout(); DECLARE_RESPONSE_TABLE(TLaskuri4App); }; DEFINE_RESPONSE_TABLE1(TLaskuri4App, TLaskuriApp ) // EV_COMMAND(CM_HELPABOUT, CmHelpAbout), END_RESPONSE_TABLE; /********************* Pääohjelma *********************************************/ int OwlMain(int ,char far * []) { return TLaskuri4App("Autolaskuri").Run(); }