//*********************************************************************** // // koko.cpp // //*********************************************************************** #include #include "koko.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) ON_WM_CREATE () // lomake luodaan ON_WM_PAINT () // lomake piirretään ON_WM_SIZE () // lomakkeen kokoa muutetaan END_MESSAGE_MAP () CMainWindow::CMainWindow () { CString strWndClass = AfxRegisterWndClass (NULL, myApp.LoadStandardCursor (IDC_ARROW), (HBRUSH) COLOR_WINDOW, myApp.LoadStandardIcon (IDI_APPLICATION)); CreateEx (NULL, strWndClass, "Ruudun koon tarkastelu", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 300, NULL, NULL, NULL ); } int CMainWindow::OnCreate (LPCREATESTRUCT lpcs) // lomakkeen luomistapahtuma { return 0; // kaikki hyvin, palautetaan 0 } void CMainWindow::OnPaint () // lomakkeen piirtotapahtuma { char bufferi[21]; // bufferia tarvitaan muunnoksessa int -> char CPaintDC dc (this); // piirtopintaolion luominen dc.SetBkMode(TRANSPARENT); // tekstin taustaväri läpinäkyväksi CRect rect; // luodaan CRect-luokan olio... GetClientRect (&rect); // ...johon tallennetaan lomakkeen koko wsprintf (bufferi, "%3d", ::GetSystemMetrics(SM_CXSCREEN)); // kopioidaan ruudun leveys bufferiin ja muutetaan sen tietotyyppi chariksi strcat (bufferi, " ruudun leveys"); // liitetään teksti "ruudun leveys" numeron perään dc.TextOut (rect.left, rect.bottom/2-30, bufferi, 17); // piirretään teksti lomakkeelle wsprintf (bufferi, "%3d", ::GetSystemMetrics(SM_CYSCREEN)); // kopioidaan ruudun leveys bufferiin ja muutetaan sen tietotyyppi chariksi strcat (bufferi, " ruudun korkeus"); // liitetään teksti "ruudun leveys" numeron perään dc.TextOut (rect.left, rect.bottom/2-10, bufferi, 18); // piirretään teksti lomakkeelle wsprintf (bufferi, "%3d", rect.right); // kopioidaan ikkunan leveys bufferiin ja muutetaan sen tietotyyppi chariksi strcat (bufferi, " ikkunan leveys"); // liitetään teksti "ikkunan leveys" numeron perään dc.TextOut (rect.left, rect.bottom/2+10, bufferi, 18); // piirretään teksti lomakkeelle wsprintf (bufferi, "%3d", rect.bottom); // kopioidaan ikkunan leveys bufferiin ja muutetaan sen tietotyyppi chariksi strcat (bufferi, " ikkunan korkeus"); // liitetään teksti "ikkunan leveys" numeron perään dc.TextOut (rect.left, rect.bottom/2+30, bufferi, 19); // piirretään teksti lomakkeelle } void CMainWindow::OnSize () // lomakkeen koonmuutostapahtuma { InvalidateRgn(NULL, TRUE); // pyyhitään ikkuna ja asetetaan sen työalue epäkelvoksi, WM_PAINT piirtää sen uudelleen }