/****************/ /* vaihtaj3.cpp */ /****************************************************************************** PROGRAM: vaihtaj3.cpp PURPOSE: Vaihtaa rahaa ja matkoja Ohjelmalla esitellään omatekoisten dialog boxien käyttöä. Pääikkuna tekee vain menun, jolla voidaan valita mikä dialog box tulee aktiiviseksi Skaalausvaihtajan oletusikkunana on luonnosta mitattu matka. Painamalla ENTER (IDOK) päästään aina tähän ikkunaan. Kun ikkunaan tullaan, valitaan koko ikkunassa oleva teksti, jotta uuden syöttäminen olisi helpompaa. Ikkunoiden toimintajärjestys on valittu Resource Workshopissa toiminnolla Options - Set order. Ikkunat ovat käytettävissä yhtäaikaa jos ne on luotu Modeless. Modeless-dialogien on käyttöön omat aliohjelmat, jotka tallettavat kaikki käyttöön otetut modeless dialogit. Modeless tai Modal dialogi valitaan kutsun perusteella Create() tai Execute() Itse dialogit voivat olla samoja. t Tähän malliin on lisätty myös esimerkki ohjelman kääntämisestä kieleltä toiselle (lisäykset merkitty t = translate) ac Pikanäppäinten käsittely lisätty (merkitty ac = accelarator). h Avustus (help). (merkitty h = help ) csh Sisältöriippuva avustus (merkitty csh = context sensitive help) v Versio-informaatio a About-dialogin käsittely PROJECT: vaihtaja.cpp vaihtaja.rc vaihtaja.def // Win 3.11 scaling.cpp = scaling-dialogin käsittely. ALI\transdlg.c = dialofien kääntäminen ALI\language.c = tekstien kääntäminen ALI\mjonot.c = merkkijonojen käsittely ALI\help.c = context sensitive help TEHTÄVIÄ: 1) Kokeile vaihdella dialogien käynnistyksessä TRUE/FALSE (tuleeko modeless-dialogi vai ei) 2) Täydennä rahanvaihto toiminto valmiiksi. 3) Kokeile muuttaa dialogin oletusjärjetystä (RWSHOP!) 4) Lisää ohjelmaan lämpötilojen muunnos. 5) Muuta ohjelmaa siten, että tunnetut muunnokset luetaan dialogin käynnistyessä tiedostosta .\SCALING.INI Puutteita: MFC-versiossa ei saatu CS-helppiä toimimaan Ctrl-F1 Editor: Vesa Lappalainen 26.10.1992 & 26.8.1994 & 10.11.1996 6.11.1999 muutettu MFC-versioksi ****************************************************************************/ #include #include "mfc\mfctrans.h" /* t*/ #include "scaling.h" #include "help.h" /* csh */ #include "vaihtaja.rh" //------------------------------------------------------------------------------ class CMainWindow : public CFrameWnd { public: CMainWindow() { Create(NULL,"Vaihtaja"); LoadAccelTable(MAKEINTRESOURCE(IDA_PIKA)); /* ac */ CMenu menu; menu.LoadMenu(IDM_PAAMENU); SetMenu(&menu); menu.Detach(); MoveWindow(20,20,400,400,FALSE); // SetBkColor(::GetWindowDC(*this),0); // SetBackgroundColor } ~CMainWindow() { free_translate(); /* t */ ::WinHelp(m_hWnd,T("VAIHTAJA.HLP"),HELP_QUIT,0); /* h */ } void OnPaint() { CPaintDC hdc(this); hdc.TextOut(10,10,T("Valitse menusta ohjelma!")); /* t */ } void CmExit() { DestroyWindow(); } void CmScaling() { // RunScaling(this,FALSE); RunScaling(this,TRUE); } void CmChange() { CDialog(IDD_CHANGE,this).DoModal(); } void CmAbout() { CDialog(IDD_ABOUT,this).DoModal(); } void CmEnglish() { /* t */ TranslateProgramAndRead(*this,"vaihtaja.tra"); } void CmFinnish() { /* t */ TranslateProgram(*this,1); } void CmHelpIndex() { /* h */ ::WinHelp(m_hWnd,T("VAIHTAJA.HLP"),HELP_INDEX,0); /* t */ } void CmHelpCS() { /* csh */ DoHelpOnFocusID(*this,T("VAIHTAJA.HLP")); /* t */ } DECLARE_MESSAGE_MAP() }; BEGIN_MESSAGE_MAP( CMainWindow, CFrameWnd ) ON_WM_PAINT() ON_COMMAND(IDM_FILE_EXIT, CmExit) ON_COMMAND(IDM_APP_SCALING ,CmScaling) ON_COMMAND(IDM_APP_MONEY ,CmChange) ON_COMMAND(CM_HELPABOUT, CmAbout) ON_COMMAND(CM_HELPINDEX ,CmHelpIndex) /* h */ ON_COMMAND(CM_HELPCS ,CmHelpCS) /* csh */ ON_COMMAND(IDM_ENGLISH ,CmEnglish) /* t */ ON_COMMAND(IDM_FINNISH ,CmFinnish) /* t */ END_MESSAGE_MAP() //----------------------------------------------------------------------------- class CVaihtajaApp : public CWinApp { public: virtual BOOL InitInstance() { m_pMainWnd = new CMainWindow(); m_pMainWnd->ShowWindow(m_nCmdShow); m_pMainWnd->UpdateWindow(); m_pMainWnd->SetIcon(LoadIcon(IDI_IKONI),TRUE); return TRUE; } void OnHelp() { // ::WinHelp(NULL,T("VAIHTAJA.HLP"),HELP_INDEX,0); /* t */ DoHelpOnFocusID(NULL,T("VAIHTAJA.HLP")); /* t */ } void OnHelpIndex() { ::WinHelp(NULL,T("VAIHTAJA.HLP"),HELP_INDEX,0); /* t */ } DECLARE_MESSAGE_MAP() }; BEGIN_MESSAGE_MAP( CVaihtajaApp , CWinApp ) ON_COMMAND(ID_HELP, OnHelp) ON_COMMAND(ID_CONTEXT_HELP, OnHelp) ON_COMMAND(ID_HELP_INDEX, OnHelpIndex) ON_COMMAND(CM_HELPCS ,OnHelpIndex) /* h */ END_MESSAGE_MAP() CVaihtajaApp VaihtajaApp;