프로그래밍/MFC
MFC 기본 클래스
에어버스
2016. 6. 12. 11:30
1. CSimpleApp : public CWinApp
SDK 프로그램의 WinMain()처럼 프레임 윈도우 생성과 메시지 루프를 제공
메시지 루프를 제공하는 역활을 하는 CWinApp::Run()는 내부적으로 자동 호출되며 코드는 나타나지 않는다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
class CMFCApplication1App : public CWinApp
{
public:
CMFCApplication1App();
// 재정의입니다.
public:
virtual BOOL InitInstance(); // Main윈도우(MainFrame)를 만들고 WM_CREATE 발생시켜 CFrmaeWnd::OnCretae()를 호출하여 프레임윈도우와 뷰를 만들고 메인윈도우를 화면에 보여준다.
virtual int ExitInstance();
// 구현입니다.
afx_msg void OnAppAbout();
DECLARE_MESSAGE_MAP() // 메시지 처리
};
extern CMFCApplication1App theApp; // 전역변수
|
cs |
2. CMainFrame : public CFrameWnd
프레임윈도우 기능 정의하며, 자신이 생성될때 View도 같이 생성된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 |
class CMainFrame : public CFrameWnd
{
protected: // serialization에서만 만들어집니다.
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)
// 특성입니다.
public:
// 작업입니다.
public:
// 재정의입니다.
public:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs); // WM_CREATE 메시지를받아 OnCreate() 호출 직전에 호출되어 윈도우스타일을 변경할 수 있다.
// 구현입니다.
public:
virtual ~CMainFrame();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected: // 컨트롤 모음이 포함된 멤버입니다.
CToolBar m_wndToolBar;
CStatusBar m_wndStatusBar;
// 생성된 메시지 맵 함수
protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); // Frame윈도우와 View도 같이 생성됨
DECLARE_MESSAGE_MAP()
};
|
cs |
3. CMFCApplication1View : public CView
마우스와 키보드 입력을 받아 처리
데이터를 화면에 출력
1
2
3
4
5 |
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
... |
cs |
뷰를 생성하는 코드는 안보이고 CMainFrame::OnCreate()를 호출하면 CApplication1View::PreCreateWindow() 가 자동 호출된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 |
class CMFCApplication1View : public CView
{
protected: // serialization에서만 만들어집니다.
CMFCApplication1View();
DECLARE_DYNCREATE(CMFCApplication1View)
// 특성입니다.
public:
CMFCApplication1Doc* GetDocument() const;
// 작업입니다.
public:
// 재정의입니다.
public:
virtual void OnDraw(CDC* pDC); // 이 뷰를 그리기 위해 재정의되었습니다.
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
// 구현입니다.
public:
virtual ~CMFCApplication1View();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// 생성된 메시지 맵 함수
protected:
DECLARE_MESSAGE_MAP()
};
#ifndef _DEBUG // MFCApplication1View.cpp의 디버그 버전
inline CMFCApplication1Doc* CMFCApplication1View::GetDocument() const
{ return reinterpret_cast<CMFCApplication1Doc*>(m_pDocument); }
#endif
|
cs |