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 가 있는 다이얼로그 프로그램이었죠? 이 윈도우 클래스(다이얼로그는 윈도우의 종류일 뿐입니다.)가 바로 이 클래스입니다. 무슨말인지 모르겠으면, 이 프로그램 실행시켜서 만들어진 저 다이얼로그가 이 클래스라고 생각하면 됩니다.
첫 단계에서 주목해야할 함수는 CMFCApplication1App 클래스의 InitInstance( )함수와 CMFCApplication1Dlg 클래스의 OnInitDialog( ) 함수입니다. 각 함수의 설명은 다음 강좌에서 하겠습니다.
'Windows > MFC 강좌 & Tips' 카테고리의 다른 글
[다이얼로그 배경색 지우기] OnEraseBkgnd 와 OnCtlColor (1) | 2020.08.08 |
---|---|
(2) MFC 초기화 함수 : InitInstance, OnInitDialog (0) | 2020.08.08 |
CString 함수 AfxExtractSubString / strtok, strtok_s, wcstok_s (0) | 2018.02.19 |
Dialog에서 툴바 생성 (0) | 2017.08.23 |
UpdateData 함수 (0) | 2017.01.04 |