개발/Application Develop

MFC 기초

huiyu 2014. 7. 22. 15:43

 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내부적으로 제공해주고 그 안에서 프로그램의 전체적인 흐름을 만들어 놓았다. 사용자는 이 만들어져 있는 흐름에 맞추어 가며 프로그램을 만드는 것이다!

728x90
반응형

'개발 > 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