MFC란?
Microsoft Foundation Class의 약자로 윈도우 운영체제 환경에서 GUI 프로그램을 쉽고 빠르게 개발하기 위한 클래스 라이브러리입니다.
기본적으로 C++언어의 기본 문법을 알고 있어야 한다!
MFC 내부구조 이해를 위한 예제
File->New->Project, 'Win32프로젝트' 선택
'빈 프로젝트' 체크 후 마침
'소스 파일' 마우스 우클릭->추가->새항목 'C++파일(.cpp)'선택 적당한 이름 입력 후 추가
다음의 코드를 입력한다.
////////////////////////////////////////////////////////
#include<afxwin.h> class CHelloApp : public CWinApp { public: virtual BOOL InitInstance(); }; BOOL CHelloApp::InitInstance() { CWinApp::InitInstance(); AfxMessageBox(L"Hello MFC"); return TRUE; } CHelloApp theApp;
////////////////////////////////////////////////////////
error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version.
과 같은 에러가 날 것이다.
MFC의 위자드를 사용할 때는 VC++에서 자동으로 MFC를 사용하도록 설정이 되지만 이번 예제는 Win32Appliction을 사용해서 프로젝트를 생성하기 때문에 MFC를 사용하도록 환경설정을 해주어야 한다.
프로젝트->속성 '구성속성'의 'MFC 사용'란은 '공유 DLL에서 MFC사용'으로 변경한다.
실행시켜 보면, "Hello,MFC"라는 메시지 박스를 띄우는 것을 볼 수 있다.
코드를 한줄씩 살펴보자!
먼저, MFC를 이용한 윈도우 프로그램은 <afxwin.h>헤더를 포함한다.
#include<afxwin.h>
MFC는 CWinApp이라는 클래스를 제공, MFC 윈도우 프로그램은 CWinApp클래스의 파생클래스를 1개 만들어야 한다.
class CHelloApp : public CWinApp { public: virtual BOOL InitInstance(); };
CWinApp 클래스는 InitInstance()라는 가상함수가 존재한다. 사용자는 반드시 이 가상함수를 재정의 해서 응용프로그램의 초기화 코드를 만들어야 한다.
초기화에 성공하면 TRUE, 실패하면 FALSE를 리턴한다.
Initinstance()함수를 재정의 할 때는 CWinApp::InitInstance()를 먼저 호출해야한다.
BOOL CHelloApp::InitInstance() { CWinApp::InitInstance(); AfxMessageBox(L"Hello MFC"); return TRUE; }
사용자가 만든 파생 클래스에 대해 객체를 전역적으로 한개만 생성한다.
CHelloApp theApp;
MFC의 WinMain()함수는 MFC내부적으로 제공해주고 그 안에서 프로그램의 전체적인 흐름을 만들어 놓았다. 사용자는 이 만들어져 있는 흐름에 맞추어 가며 프로그램을 만드는 것이다!
'Software Development > Application Develop' 카테고리의 다른 글
2. WPF + OpenCV(dll) (2) | 2014.10.11 |
---|---|
1. OpenCV 설치하기 (1) | 2014.10.11 |
Resource 정보 code에서 불러오기 (0) | 2014.06.02 |
WPF Random Color 생성 (0) | 2014.02.05 |
MFC 오목만들기 3_ 마우스 이벤트 받기 (4) | 2014.02.01 |