본문 바로가기
Windows/MFC 강좌 & Tips

(1) MFC 시작하기

by 미티치 2020. 8. 8.

MFC 가 뭔지는 모르겠지만 윈도우에서 UI가 있는 프로그램을 만들기 위해 이 글을 읽고 계실거라 생각합니다.
MFC 란 무엇인지? 에 대해서는 구글링하면 정의가 아주 많이 나와있어요. 이 글을 보고 있는 분들은 MFC가 무엇인지 보다는, MFC 라이브러리를 이용해서 프로그램을 어떻게 만드는지, Visual Studio로 MFC 프로젝트 생성은 했는데 도대체 여기 있는 소스들이 뭘 의미하는지, 어디서부터 뭘 해야할지 모르겠어서 찾아보는 분들일 거라 추측합니다. (제가 그랬거든요)

각설하고, 짧고 굵게 본론만 설명합니다. 

 

더보기

참고로 Visual Studio 안깔려 있으시면 이 글을 참조하시면 됩니다.

C++ 개발자를 위한 Visual Studio 설치하는 방법

2020/08/08 - [Dev Notes] - C++ 개발자를 위한 Visual Studio 설치하는 방법


1. MFC 프로젝트 생성

- 2019 는 처음이라.. 첫 화면에 당황해서 mfc를 검색했습니다. 아무튼 'MFC 앱'을 선택하면 됩니다. 

다음 버튼 눌러서 프로젝트 명은 자신이 원하는 이름으로 넣으시고 다음 누르면 application 설정을 할 수 있습니다. 아래처럼 설정하시고 '마침' 누르세요.
참고로 얘기하지만 Visual Studio가 이렇게 순서대로 쉽게 프로젝트를 생성할 수 있도록 위자드가 알아서 해주니까 'MFC 가 그냥 설정하는 프로젝튼가보다' 하고 넘어갈 수 있는데, 이렇게 MFC 프로젝트로 안만들고 예전에는 윈도우에 UI있는 다이얼로그 프로그램 만들려면 Win32응용프로그램으로 프로젝트 생성해서 메시지맵 일일이 구현해서 만들어줬습니다. (뭔말인지 모르겠으면 그냥 넘어가도 됩니다. 어짜피 MFC로 프로그램 많이 만들다보면 나중에 알게될 내용입니다.)

  • 애플리케이션 종류 : 대화 상자 기반 (또는 Dialog based로 명시되어 있음)
  • MFC 사용 : 공유 DLL에서 MFC 사용

 

 


2. MFC 솔루션 구조 분석

자 어려운 과정을 통해서 여기까지 오셨습니다. 오늘 강좌 여기가 끝이에요 조금만 더 힘내세요.

프로젝트 만들고나면 솔루션 탐색기에 아래와같이 이미 생성된 헤더(.h)와 cpp파일들이 있을거에요. 이 h와 cpp에 있는 클래스 구조들을 지금은 정확하게는 몰라도 되지만, Visual Studio가 Windows 프레임워크에 맞춰서 기본적인 다이얼로그 베이스의 프로그램을 만들어준 것이라고만 알고 있으면 됩니다.

일단 프로젝트 생성되었으면 Release | x64 설정으로 '로컬 Windows 디버거' 클릭해서 프로그램 실행시켜봅시다.

 

그럼 아래처럼 다이얼로그 창이 하나 만들어질거에요. 

 

Visual Studio가 만들어준 이 기본 프로그램이 어떤 프로그램인지, '다이얼로그'가 뭔지 눈으로 봤으면 이제 다시 솔루션 구조로 와봅시다. 나머지는 다 제껴놓고, MFCApplication1.h 와 cpp MFCApplication1Dlg.h 와 cpp 가 이 솔루션의 주된 역할을 합니다.

  • MFCApplication1.h 에 정의된 CMFCApplication1App 클래스 
    : 
    이 '프로세스'의 기반이 되는 클래스라고 생각하면 된다. 프로세스가 뭔지 모른다면 application를 동작시키는 메인 클래스라고 생각하며 된다. 그냥 일단은, '이 프로그램을 실행시키면 이 클래스의 인스턴스가 생성되는 거구나'라고 알고있으면 됩니다.
  • MFCApplication1Dlg.h 에 정의된 CMFCApplication1Dlg 클래스 
    우리가 만든 이 프로그램은 UI 가 있는 다이얼로그 프로그램이었죠? 이 윈도우 클래스(다이얼로그는 윈도우의 종류일 뿐입니다.)가 바로 이 클래스입니다. 무슨말인지 모르겠으면, 이 프로그램 실행시켜서 만들어진 저 다이얼로그가 이 클래스라고 생각하면 됩니다

MFCApplication 프로젝트의 솔루션 구조

 

첫 단계에서 주목해야할 함수는 CMFCApplication1App 클래스의 InitInstance( )함수와 CMFCApplication1Dlg 클래스 OnInitDialog( ) 함수입니다. 각 함수의 설명은 다음 강좌에서 하겠습니다.