Download presentation
Presentation is loading. Please wait.
1
MFC 응용 프로그램 구조 두 개의 윈도우로 구성된 일반적인 MFC 프로그램 프레임 윈도우
뷰: 프레임 윈도우에 종속하며 클라이언트 영역에 위치
2
MFC 응용 프로그램 생성 (1) 프로젝트 종류 선택
3
MFC 응용 프로그램 생성 (2) MFC 응용프로그램 마법사 1단계
4
MFC 응용 프로그램 생성 (3) MFC 응용프로그램 마법사 2단계
5
MFC 응용 프로그램 생성 (4) MFC 응용프로그램 마법사 3단계
6
MFC 응용 프로그램 생성 (5) MFC 응용프로그램 마법사 4단계
7
MFC 응용 프로그램 생성 (6) MFC 응용프로그램 마법사 5단계
8
MFC 응용 프로그램 생성 (7)
9
주요 클래스 응용 프로그램 클래스 (CSimpleApp) 프레임 윈도우 클래스 (CMainFrame) 뷰 클래스
(CChildView) 프레임 윈도우 생성 메시지 루프 제공 프레임 윈도우 기능 제공 뷰 생성 뷰 기능 제공
10
주요 클래스 기능 클래스별 핵심 사항 요약 클래스 종류 베이스 클래스 이름 핵심 함수 - 주 역할 응용 프로그램 클래스
CWinApp InitInstance() - 프레임 윈도우를 생성한다. Run() - 메시지 루프를 제공한다. 프레임 윈도우 CFrameWnd OnCreate() - 뷰를 생성한다. 뷰 클래스 CWnd OnPaint() - 화면에 출력한다.
11
생성된 코드 (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; }
12
생성된 코드 (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();
13
생성된 코드 (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()를 호출하지 마십시오. }
14
Simple 실행 화면
Similar presentations