MFC tehtäviä perusteet vastaus3
Mureakuha
Tehtävä:
Kirjoita ohjelma, jossa on kaksi CButton-luokan BS_AUTOCHECKBOX ja BS_AUTORADIOBUTTON tyylin kontrollia. Näiden tila tutkitaan painettaessa kyseisiä painonappeja ja tulos tulostetaan CStatic-luokan kontrolleihin.
[muokkaa]
CPP
//*********************************************************************** // // checkradio.cpp // //*********************************************************************** #include <afxwin.h> #include "checkradio.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_BN_CLICKED (5, OnButtonCheckClicked) // check-nappia painetaan ON_BN_CLICKED (6, OnButtonRadioClicked) // radio-nappia painetaan END_MESSAGE_MAP () CMainWindow::CMainWindow () { CString strWndClass = AfxRegisterWndClass ( 0, myApp.LoadStandardCursor (IDC_ARROW), (HBRUSH) COLOR_WINDOW, myApp.LoadStandardIcon (IDI_APPLICATION)); CreateEx (0, strWndClass, "CheckBox & RadioButton", WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, 500, 300, NULL, NULL, NULL); } int CMainWindow::OnCreate (LPCREATESTRUCT lpcs) // 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; // luodaan CRect-luokan olio jota käytetään kehyskontrollin luomisessa m_ctlGroupBox.Create ("", WS_CHILD | WS_VISIBLE | BS_GROUPBOX, rect, this, (UINT) -1); // luodaan kehyskontrolli m_ctlGroupBox.SetFont (&m_fontMain, FALSE); // asetetaan kehyskontrollin fontti rect.SetRect (110, 50, 210, 70); m_ctlCheckBox1.Create ("AutoCheck1", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, rect, this, (UINT) 1); // luodaan valintaruutukontrolli m_ctlCheckBox1.SetFont (&m_fontMain, FALSE); // asetetaan valintaruutukontrollin fontti rect.SetRect (110, 70, 210, 90); m_ctlCheckBox2.Create ("AutoCheck2", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, rect, this, (UINT) 2); // luodaan valintaruutukontrolli m_ctlCheckBox2.SetFont (&m_fontMain, FALSE); // asetetaan valintaruutukontrollin fontti rect.SetRect (280, 50, 380, 70); m_ctlRadioButton1.Create ("AutoRadio1", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, rect, this, (UINT) 3); // luodaan valintanappikontrolli m_ctlRadioButton1.SetFont (&m_fontMain, FALSE); // asetetaan valintanappikontrollin fontti rect.SetRect (280, 70, 380, 90); m_ctlRadioButton2.Create ("AutoRadio2", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, rect, this, (UINT) 4); // luodaan valintanappikontrolli m_ctlRadioButton2.SetFont (&m_fontMain, FALSE); // asetetaan valintanappikontrollin fontti rect.SetRect (110, 120, 210, 150); m_ctlPushButton1.Create ("Check", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, rect, this, (UINT) 5); // luodaan valintanappikontrolli m_ctlPushButton1.SetFont (&m_fontMain, FALSE); // asetetaan valintanappikontrollin fontti m_ctlRadioButton1.SetCheck (TRUE); rect.SetRect (280, 120, 380, 150); m_ctlPushButton2.Create ("Radio", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, rect, this, (UINT) 6); // luodaan valintanappikontrolli m_ctlPushButton2.SetFont (&m_fontMain, FALSE); // asetetaan valintanappikontrollin fontti rect.SetRect (110, 170, 210, 190); m_ctlStatic1.Create ("Check1 pois", WS_CHILD | WS_VISIBLE | SS_SUNKEN, rect, this, (UINT) 7); // luodaan valintanappikontrolli m_ctlStatic1.SetFont (&m_fontMain, FALSE); // asetetaan valintanappikontrollin fontti rect.SetRect (110, 200, 210, 220); m_ctlStatic2.Create ("Check2 pois", WS_CHILD | WS_VISIBLE | SS_SUNKEN, rect, this, (UINT) 8); // luodaan valintanappikontrolli m_ctlStatic2.SetFont (&m_fontMain, FALSE); // asetetaan valintanappikontrollin fontti rect.SetRect (280, 170, 380, 190); m_ctlStatic3.Create ("Radio1 päällä", WS_CHILD | WS_VISIBLE | SS_SUNKEN, rect, this, (UINT) 9); // luodaan valintanappikontrolli m_ctlStatic3.SetFont (&m_fontMain, FALSE); // asetetaan valintanappikontrollin fontti return 0; // kaikki hyvin, palautetaan 0 } void CMainWindow::OnButtonCheckClicked () // check-nappia painettu { if (m_ctlCheckBox1.GetCheck () == TRUE) //tutkitaan checkbox1 m_ctlStatic1.SetWindowText ("Check1 päällä"); // vaihdetaan teksti else m_ctlStatic1.SetWindowText ("Check1 pois"); if (m_ctlCheckBox2.GetCheck () == TRUE) //tutkitaan checkbox2 m_ctlStatic2.SetWindowText ("Check2 päällä"); // vaihdetaan teksti else m_ctlStatic2.SetWindowText ("Check2 pois"); } void CMainWindow::OnButtonRadioClicked () // radio-nappia painettu { if (m_ctlRadioButton1.GetCheck () == TRUE) //tutkitaan radiobutton m_ctlStatic3.SetWindowText ("Radio1 päällä"); // vaihdetaan teksti else m_ctlStatic3.SetWindowText ("Radio2 päällä"); }
[muokkaa]
H
//*********************************************************************** // // checkradio.h // //*********************************************************************** class CMyApp : public CWinApp // luokan CMyApp periyttäminen MFC:n ohjelman ohjelma-yliluokasta { public: // aliohjelmajäsenten esittely virtual BOOL InitInstance (); // ohjelman instanssin initialisaatioaliohjelma }; class CMainWindow : public CWnd // luokan CMainWindow periyttäminen MFC:n ikkuna-yliluokasta { private: // tietojäsenten esittely CFont m_fontMain; // fontti CButton m_ctlGroupBox; // kehyskontrolli CButton m_ctlCheckBox1; // valintaruutukontrolli CButton m_ctlCheckBox2; // valintaruutukontrolli CButton m_ctlRadioButton1; // valintanappikontrolli CButton m_ctlRadioButton2; // valintanappikontrolli CButton m_ctlPushButton1; // painonappikontrolli CButton m_ctlPushButton2; // painonappikontrolli CStatic m_ctlStatic1; // etikettikontrolli CStatic m_ctlStatic2; // etikettikontrolli CStatic m_ctlStatic3; // etikettikontrolli public: // aliohjelmajäsenten esittely CMainWindow (); // ikkunan luontialiohjelma protected: // aliohjelmajäsenten esittely afx_msg int OnCreate (LPCREATESTRUCT); // luomisaliohjelma afx_msg void OnButtonCheckClicked (); afx_msg void OnButtonRadioClicked (); DECLARE_MESSAGE_MAP () };
Tämän dokumentin kopiointi, levittäminen sekä muokkaaminen on sallittua GNU Free Documentation Licensen version 1.2 tai uudemman Free Software Foundationin julkaiseman version mukaisesti, ilman muuttumattomuuslauseketta tai kansitekstejä. Tätä koskee vastuuvapaus.
Kopio lisenssistä (englanniksi) löytyy täältä.
Kopio lisenssistä (englanniksi) löytyy täältä.
Alkuperäinen (c) Petteri Hämäläinen
