MFC tehtäviä perusteet vastaus3

Mureakuha

Loikkaa: valikkoon, hakuun

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.

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ä"); 
}

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

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

Henkilökohtaiset työkalut