Etusivu

C/C++ teoria
Ohjelmointitesti
C-kielen alkeet
C++-alkeet
C++-taulukkoja
Koodausohjeita
C++ tehtävät
C++ perusteet
C++ vaikeat
C++ syventävät
Kertaustehtäviä
Win32-teoria
Ohjelmointitesti
Ohjelmointimalli
Ikkunaluokat
Lyhyt pohja
Laajennettu pohja
Win32-tehtävät
Win32 perusteet
Win32 vaikeat
Win32 syventävät
MFC-teoria
Kontrolliluokat
MFC-luokat
Lyhyt pohja
Laajennettu pohja
MFC-tehtävät
MFC perusteet
MFC vaikeat
MFC syventävät
Java-teoria
Javan alkeet
Java pohja
Java-tehtävät
Java konsoli
Java perusteet
Java vaikeat
Java syventävät
 
Laajennettu pohja
Kaikkein käyttökelpoisin MFC-ohjelma josta on helppo jatkaa eteenpäin:
pohjaex.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

    public: // aliohjelmajäsenten esittely
        CMainWindow (); // ikkunan luontialiohjelma

    protected: // aliohjelmajäsenten esittely
        afx_msg
int OnCreate (); // initialisaatio
        afx_msg
void OnPaint (); // piirto
        afx_msg
void OnSize (UINT, int, int); // koonmuutos
        DECLARE_MESSAGE_MAP () // MESSAGE MAP:n esittely

};

pohjaex.cpp

#include <afxwin.h>
#include "pohjaex.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_PAINT () //
lomakkeen piirtäminen
    ON_WM_SIZE () // lomakkeen koon muutos
END_MESSAGE_MAP ()

CMainWindow::CMainWindow ()
{

    CString strWndClass = AfxRegisterWndClass (
        NULL, //
lomakkeen tyyli
        myApp.LoadStandardCursor (IDC_ARROW), //
lomakkeen kursori
        (HBRUSH) COLOR_WINDOW, // ikkunan taustan väri
        myApp.LoadStandardIcon (IDI_APPLICATION) //
lomakkeen ikoni
    ); // rekisteröi ikkunaluokan

    CreateEx (
        NULL, //
lomakkeen lisätyyli
        strWndClass, // lomakkeen ikkunaluokka
        "OmaOhjelma", //
lomakkeen otsikko
        WS_OVERLAPPEDWINDOW, //
lomakkeen tyyli
        CW_USEDEFAULT, // aloitus x-positio
        CW_USEDEFAULT, // aloitus y-positio
        CW_USEDEFAULT, // alkuleveys
        CW_USEDEFAULT, // alkukorkeus
        NULL, // emoikkunan kahva
        NULL, //
lomakkeen valikon kahva
        NULL // lisätietoja
    ); //
lomakkeen luominen
}

int CMainWindow::OnCreate () // lomakkeen initialisaatio
{
    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"); // fontti

    CRect rect (10, 10, 482, 266); // suorakaiteen koordinaatit
    m_ctlGroupBox.Create ("Oma ohjelma", WS_CHILD | WS_VISIBLE | BS_GROUPBOX, rect,
this, 0); // kehyskontrolli
    m_ctlGroupBox.SetFont (&m_fontMain, FALSE); // asettaa kehyskontrollin fontin

    
return 0; // kaikki hyvin, 0 palautuu
}

void CMainWindow::OnPaint () // lomakkeen piirto
{
    CPaintDC dc (this); //
luo piirtopintaolion
}

void CMainWindow::OnSize (UINT tyyli, int cx, int cy) // lomakkeen koonmuutos
{

    m_ctlGroupBox.MoveWindow (10, 10, cx-20, cy-20, TRUE); // siirtää kehyskontrollin
}

 

Tulos:

mfcpohjaex.gif (2255 bytes)

 

Lisäykset:

  • Lomakkeella on oikea taustaväri
  • Ohjelma osaa käyttää oikeaa systeemifonttia
  • Lomakkeelle piirretään kehyskontrolli
  • Lomaketta voi suurentaa ja pienentää ja WM_SIZE sanoma skaalaa kehyksen sitä mukaa
 
Sivutilan tarjoaa Tietokonepalvelu Mikrolahti.