MFC tehtäviä vaikeat vastaus1

Mureakuha

Loikkaa: valikkoon, hakuun

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.

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
}

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ä.

Alkuperäinen (c) Petteri Hämäläinen

Henkilökohtaiset työkalut