//*********************************************************************** // // rivit.cpp // //*********************************************************************** #include #include // yleisten kontrollien otsikkotiedoston lisäys #include "rivit.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 () // lomakkeen luominen ON_WM_SIZE () // lomakkeen koon muutos ON_BN_CLICKED (3, OnButton1Clicked) // 'Lisää listaan'-nappia painetaan ON_BN_CLICKED (4, OnButton2Clicked) // 'Poista rivi'-nappia painetaan ON_BN_CLICKED (5, OnButton3Clicked) // 'Tyhjennä lista'-nappia painetaan END_MESSAGE_MAP () 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öi oman ikkunaluokan CreateEx ( NULL, // lomakkeen lisätyyli strWndClass, // lomakkeen ikkunaluokka "Rivien lisäys", // lomakkeen otsikko WS_OVERLAPPEDWINDOW, // ikkunan tyyli CW_USEDEFAULT, // aloitus x-positio CW_USEDEFAULT, // aloitus y-positio 500, // alkuleveys 300, // alkukorkeus NULL, // emoikkunan kahva NULL, // lomakkeen valikon kahva NULL // lisätietoja ); // lomakkeen luominen } 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); // CRect-luokan olio tallentaa suorakaiteen vasemman ylänurkan ja oikean alanurkan m_ctlGroupBox.Create ("", WS_CHILD | WS_VISIBLE | BS_GROUPBOX, rect, this, 0); // luo kehyskontrollin m_ctlGroupBox.SetFont (&m_fontMain, FALSE); // asettaa kehyskontrollin fontin m_ctlEdit.CreateEx (WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL, 0, 0, 0, 0, m_hWnd, (HMENU) 1); // muokkausruutu m_ctlEdit.SetFont (&m_fontMain, FALSE); m_ctlList.CreateEx (WS_EX_CLIENTEDGE, "LISTBOX", NULL, WS_CHILD | WS_VISIBLE | LBS_STANDARD, 0, 0, 0, 0, m_hWnd, (HMENU) 2); // luetteloruutu m_ctlList.SetFont (&m_fontMain, FALSE); m_ctlList.AddString ("Antti"); // lisää rivin m_ctlList.AddString ("Kaija"); m_ctlList.AddString ("Mikko"); m_ctlList.AddString ("Pekka"); m_ctlList.AddString ("Liisa"); m_ctlList.AddString ("Jussi"); m_ctlList.AddString ("Tiina"); m_ctlList.AddString ("Susanna"); m_ctlButton1.Create ("Lisää listaan", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, rect, this, (UINT) 3); // painonappi m_ctlButton1.SetFont (&m_fontMain, FALSE); m_ctlButton2.Create ("Poista rivi", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, rect, this, (UINT) 4); // painonappi m_ctlButton2.SetFont (&m_fontMain, FALSE); m_ctlButton3.Create ("Tyhjennä lista", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, rect, this, (UINT) 5); // painonappi m_ctlButton3.SetFont (&m_fontMain, FALSE); m_wndStatusBar.Create (WS_CHILD | WS_VISIBLE | CCS_BOTTOM | SBARS_SIZEGRIP, rect, this, 6); // luodaan tilarivikontrolli int osat[2] = { 0, 0 }; // muutetaan tilarivien osien kokoja m_wndStatusBar.SetParts (2, osat); // asetaan ne voimaan m_wndStatusBar.SetText ("Aloita...", 0, 0); // tulostetaan teksti ensimmäiseen osaan tilarivillä m_wndStatusBar.SetText ("8", 1, 0); // tulostetaan teksti toiseen osaan tilarivillä m_rivit = 8; // rivejä on aluksi 8 return 0; // kaikki hyvin, 0 palautuu } void CMainWindow::OnSize (UINT tyyli, int cx, int cy) // lomakkeen koonmuutostapahtuma { int osat[2] = { cx-100, cx }; // muutetaan tilarivien osien kokoja m_wndStatusBar.SetParts (2, osat); // asetaan ne voimaan m_ctlGroupBox.MoveWindow (10, 10, cx-20, cy-40, TRUE); // siirtää kontrollit oikeaan paikkaan m_ctlEdit.MoveWindow (50, 50, cx-250, 19, TRUE); m_ctlList.MoveWindow (50, 100, cx-250, cy-150, TRUE); m_ctlButton1.MoveWindow (cx-180, 50, 130, 30, TRUE); m_ctlButton2.MoveWindow (cx-180, 100, 130, 30, TRUE); m_ctlButton3.MoveWindow (cx-180, 140, 130, 30, TRUE); m_wndStatusBar.MoveWindow (NULL, NULL, NULL, NULL, TRUE); } void CMainWindow::OnButton1Clicked () // 'Lisää listaan'-nappia painetaan { CString bufferi; m_ctlEdit.GetWindowText (bufferi); // hakee tekstin editistä if (strcmp (bufferi, "") == TRUE) // lukiko editissä jotain? { char cBufferi[10]; m_ctlList.AddString (bufferi); // lisää rivin ListBoxiin m_wndStatusBar.SetText ("Lisäsit juuri rivin...", 0, 0); // tulostaa tekstin ensimmäiseen osaan tilarivillä itoa (m_ctlList.GetCount(), cBufferi, 10); // muuntaa int->char m_wndStatusBar.SetText (cBufferi, 1, 0); // tulostaa tekstin toiseen osaan tilarivillä } else // jos editissä ei lukenut mitään m_wndStatusBar.SetText ("Rivin lisäys ei onnistunut...", 0, 0); } void CMainWindow::OnButton2Clicked () // 'Poista rivi'-nappia painetaan { int index = m_ctlList.GetCurSel (); // kysyy valitun rivin listboxista if (index != LB_ERR) // jos ListBoxista ei ollut valittuna mitään { char cBufferi[10]; m_rivit = m_ctlList.DeleteString (index); // poistaa rivin ListBoxista m_wndStatusBar.SetText ("Poistit rivin painamalla nappia...", 0, 0); itoa (m_rivit, cBufferi, 10); m_wndStatusBar.SetText (cBufferi, 1, 0); // tulostaa tekstin toiseen osaan tilarivillä } else m_wndStatusBar.SetText ("Rivin poisto ei onnistunut...", 0, 0); } void CMainWindow::OnButton3Clicked () // 'Tyhjennä lista'-nappia painetaan { char cBufferi[10]; m_ctlList.ResetContent () ; // tyhjentää listboxin m_wndStatusBar.SetText ("Tyhjensit juuri listan...", 0, 0); m_rivit = 0; itoa (m_rivit, cBufferi, 10); // tietotyypin muunnos m_wndStatusBar.SetText (cBufferi, 1, 0); // tulostaa tekstin toiseen osaan tilarivillä }