MFC laajempipohja

Mureakuha

Loikkaa: valikkoon, hakuun

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:

Kuva:MFC_laajempi_pohja.PNG

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