MFC 응용 프로그램 구조 두 개의 윈도우로 구성된 일반적인 MFC 프로그램 프레임 윈도우 뷰: 프레임 윈도우에 종속하며 클라이언트 영역에 위치
MFC 응용 프로그램 생성 (1) 프로젝트 종류 선택
MFC 응용 프로그램 생성 (2) MFC 응용프로그램 마법사 1단계
MFC 응용 프로그램 생성 (3) MFC 응용프로그램 마법사 2단계
MFC 응용 프로그램 생성 (4) MFC 응용프로그램 마법사 3단계
MFC 응용 프로그램 생성 (5) MFC 응용프로그램 마법사 4단계
MFC 응용 프로그램 생성 (6) MFC 응용프로그램 마법사 5단계
MFC 응용 프로그램 생성 (7)
주요 클래스 응용 프로그램 클래스 (CSimpleApp) 프레임 윈도우 클래스 (CMainFrame) 뷰 클래스 (CChildView) 프레임 윈도우 생성 메시지 루프 제공 프레임 윈도우 기능 제공 뷰 생성 뷰 기능 제공
주요 클래스 기능 클래스별 핵심 사항 요약 클래스 종류 베이스 클래스 이름 핵심 함수 - 주 역할 응용 프로그램 클래스 CWinApp InitInstance() - 프레임 윈도우를 생성한다. Run() - 메시지 루프를 제공한다. 프레임 윈도우 CFrameWnd OnCreate() - 뷰를 생성한다. 뷰 클래스 CWnd OnPaint() - 화면에 출력한다.
생성된 코드 (Simple.h, Simple.cpp) class CSimpleApp : public CWinApp { public: CSimpleApp(); virtual BOOL InitInstance(); afx_msg void OnAppAbout(); DECLARE_MESSAGE_MAP() }; // Simple.cpp CSimpleApp theApp; BOOL CSimpleApp::InitInstance() { … CWinApp::InitInstance(); CMainFrame* pFrame = new CMainFrame; if (!pFrame) return FALSE; m_pMainWnd = pFrame; return TRUE; }
생성된 코드 (MainFrm.h, MainFrm.cpp) class CMainFrame : public CFrameWnd { … protected: CStatusBar m_wndStatusBar; // 컨트롤 모음이 포함된 멤버입니다. CToolBar m_wndToolBar; CChildView m_wndView; // 생성된 메시지 맵 함수 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnSetFocus(CWnd *pOldWnd); }; // MainFrm.cpp int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { … // 프레임의 클라이언트 영역을 차지하는 뷰를 만듭니다. if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL)) { TRACE0("뷰 창을 만들지 못했습니다.\n"); return -1; } return 0; void CMainFrame::OnSetFocus(CWnd *) { // 뷰 창으로 포커스를 이동합니다. m_wndView.SetFocus();
생성된 코드 (ChildView.h, ChildView.cpp) class CChildView : public CWnd { public: CChildView(); virtual ~CChildView(); protected: virtual BOOL PreCreateWindow(CREATESTRUCT& cs); // 생성된 메시지 맵 함수 afx_msg void OnPaint(); DECLARE_MESSAGE_MAP() }; // ChildView.cpp void CChildView::OnPaint() { CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트 // TODO: 여기에 메시지 처리기 코드를 추가합니다. dc.TextOutW(100, 100, CString("안녕하세요.")); // 그리기 메시지에 대해서는 CWnd::OnPaint()를 호출하지 마십시오. }
Simple 실행 화면