//*********************************************************************** // // tilarivi.cpp // //*********************************************************************** #include #include // yleisten kontrollien otsikkotiedoston lisäys #include "tilarivi.h" CMyApp myApp; ///////////////////////////////////////////////////////////////////////// // CMyApp luokan aliohjelmien toteutus BOOL CMyApp::InitInstance () { m_pMainWnd = new CMainWindow; m_pMainWnd->ShowWindow (m_nCmdShow); m_pMainWnd->UpdateWindow (); return TRUE; } ///////////////////////////////////////////////////////////////////////// // CMainWindow luokan aliohjelmien toteutus BEGIN_MESSAGE_MAP (CMainWindow, CWnd) // MESSAGE MAP alkaa ON_WM_CREATE () // lomake luodaan ON_WM_PAINT () // lomake piirretään ON_WM_SIZE () // lomakkeen kokoa muutetaan END_MESSAGE_MAP () // MESSAGE MAP loppuu CMainWindow::CMainWindow () { CString strWndClass = AfxRegisterWndClass ( NULL, // ikkunan tyyli myApp.LoadStandardCursor (IDC_ARROW), // ikkunan kursori (HBRUSH) COLOR_WINDOW, // ikkunan taustan väri myApp.LoadStandardIcon (IDI_APPLICATION) // ikkunan ikoni ); // rekisteröidään oma ikkunaluokka CreateEx ( NULL, // ikkunan lisätyyli strWndClass, // lomakkeen ikkunaluokka "Tilarivi", // ikkunan otsikko WS_OVERLAPPEDWINDOW, // ikkunan tyyli CW_USEDEFAULT, // x-positio aluksi CW_USEDEFAULT, // y-positio aluksi 500, // leveys aluksi 300, // korkeus aluksi NULL, // emoikkunan kahva NULL, // ikkunan valikon kahva NULL // lisätietoja ); // luodaan ikkuna } int CMainWindow::OnCreate () // lomakkeen luomistapahtuma { m_fontMain.CreateFont (10, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "MS Sans Serif"); // fontin luominen CRect rect(10, 10, 482, 266); // luodaan CRect-luokan olio jota käytetään kehyskontrollin luomisessa m_ctlGroupBox.Create ("Tilarivi", WS_CHILD | WS_VISIBLE | BS_GROUPBOX, rect, this, (UINT) -1); // luodaan kehyskontrolli m_ctlGroupBox.SetFont (&m_fontMain, FALSE); // asetetaan kehyskontrollin fontti m_wndStatusBar.Create (WS_CHILD | WS_VISIBLE | CCS_BOTTOM | SBARS_SIZEGRIP, rect, this, 1); // luodaan tilarivikontrolli m_wndStatusBar.SetText ("Seurataan ikkunan koon muutosta", 0, 0); // tulostetaan teksti ensimmäiseen osaan tilarivillä return 0; // kaikki hyvin, palautetaan 0 } void CMainWindow::OnSize (UINT tyyli, int cx, int cy) // lomakkeen koonmuutostapahtuma { m_ctlGroupBox.MoveWindow (10, 10, cx-20, cy-40, TRUE); // siirretään kehyskontrolli oikeaan paikkaan m_wndStatusBar.MoveWindow (NULL, NULL, NULL, NULL, TRUE); // siirretään tilarivikontrolli oikeaan paikkaan static char bufferi[20] ; // tilapäinen merkkijonomuuttuja int osat[3] = { cx-200, cx-100, cx }; // muutetaan tilarivien osien kokoja m_wndStatusBar.SetParts (3, osat); // asetaan ne voimaan wsprintf (bufferi, "%3d", cx); // kopioidaan ikkunan leveys bufferiin ja muutetaan sen tietotyyppi chariksi strcat (bufferi, " leveys"); // liitetään teksti "leveys" numeron perään m_wndStatusBar.SetText (bufferi, 1, 0); // tulostetaan teksti toiseen osaan tilarivillä wsprintf (bufferi, "%3d", cy); // kopioidaan ikkunan korkeus bufferiin ja muutetaan sen tietotyyppi chariksi strcat (bufferi, " korkeus"); // liitetään teksti "korkeus" numeron perään m_wndStatusBar.SetText (bufferi, 2, 0); // tulostetaan teksti kolmanteen osaan tilarivillä }