MFC tehtäviä vaikeat vastaus1
Mureakuha
Tehtävä:
Kirjoita ohjelma, jossa on liukusäädin (CSliderCtrl luokka) ja edistyspalkki (CProgressCtrl luokka) yleiset kontrollit. Säädettäessä liukusäädintä vaikuttaa aseman muutos myös edistyspalkkiin. Se siis seuraa liukusäätimen asentoa. Aseta liukusäätimelle väliksi 0 - 20 ja edistyspalkille 0 - 100.
[muokkaa]
CPP
//*********************************************************************** // // liuku.cpp // //*********************************************************************** #include <afxwin.h> #include <afxcmn.h> // yleisten kontrollien otsikkotiedosto #include "liuku.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_HSCROLL () // liukusäärimen asema muuttuu END_MESSAGE_MAP () CMainWindow::CMainWindow () { CString strWndClass = AfxRegisterWndClass ( NULL, // lomakkeen tyyli myApp.LoadStandardCursor (IDC_ARROW), // lomakkeen kursori (HBRUSH) COLOR_WINDOW, // lomakkeen taustan väri myApp.LoadStandardIcon (IDI_APPLICATION) // lomakkeen ikoni ); // rekisteröi oman ikkunaluokan CreateEx ( NULL, // lomakkeen lisätyyli strWndClass, // lomakkeen ikkunaluokka "Liukusäädin & edistyspalkki", // lomakkeen otsikko WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU, // lomakkeen 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 rect.SetRect (80, 100, 392, 140); m_ctlSlider.Create (WS_CHILD | WS_VISIBLE | TBS_HORZ | TBS_AUTOTICKS | TBS_BOTH, rect, this, 1); // liukusäädin m_ctlSlider.SetRange (0, 20, TRUE); // asettaa arvoalueen rect.SetRect (20, 170, 472, 185); m_ctlProgress.Create (WS_CHILD | WS_VISIBLE, rect, this, 2); // edistyspalkki m_ctlProgress.SetRange (0, 100); // asettaa arvoalueen return 0; // kaikki hyvin, 0 palautuu } void CMainWindow::OnHScroll () // liukusäärimen asema muuttuu { m_ctlProgress.SetPos (5 * m_ctlSlider.GetPos()) ; // hakee liukusäätimen aseman ja lähettää sen * 5 edistyspalkille }
[muokkaa]
H
//*********************************************************************** // // liuku.h // //*********************************************************************** class CMyApp : public CWinApp // CMyApp periytetään MFC:n ohjelma-yliluokasta { public: // aliohjelmajäsenten esittely virtual BOOL InitInstance (); // ohjelman instanssin initialisaatio }; class CMainWindow : public CWnd // CMainWindow periytetään MFC:n ikkuna-yliluokasta { private: // tietojäsenten esittely CFont m_fontMain; // fontti CButton m_ctlGroupBox; // kehyskontrolli CSliderCtrl m_ctlSlider; // liukusäädin CProgressCtrl m_ctlProgress; // edistyspalkki public: // aliohjelmajäsenten esittely CMainWindow (); // ikkunan luontialiohjelma protected: // aliohjelmajäsenten esittely afx_msg int OnCreate (); // luomisaliohjelma afx_msg void OnHScroll (); // liukusäärimen asema muuttuu DECLARE_MESSAGE_MAP () // MESSAGE MAP:n esittely };
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
