C나 C++는 대학교때 수업도 듣고 많이 봐와서 익숙한데 MFC가 뭘까 ?
첫 포스트로 MFC에 대하여 간단하게 알아본 뒤 Visual Studio 2015에서 MFC 프로젝트를 만들어보고,
어떤 형태인지 알아보려고 한다. 그럼 바로 시작!
- MFC ?
Microsoft Foundation Class Library 라고 하며 C++용 프로그램 라이브러리이다. Win32 프로그래밍에 사용되어지며 MFC는 윈도우 최신 기능을 도입함으로써 윈도우 프로그래밍을 위한 클래스 라이브러리의 사실상의 표준이라고 한다.
하지만, 1999년 이후로 Microsoft사에서 지원을 중단하였다고 한다.. 오랫동안 MFC를 사용하여 SW제품을 만드는 회사들이 아직까지 존재하지만 새로운 SW개발을 위해 MFC를 사용하기에는 별로 좋지않다는 느낌이 들었다.
그렇다면 이제 Visual Studio 2015로 넘어가서 개발을 하기위한 준비를 해보자.
- MFC 프로젝트 init 방법
1. 우선 파일을 누르고 새 프로젝트를 생성한다.
2. 템플릿에서 Visual C++ 선택 후 MFC를 선택한다. (없으면 설치!)
3. MFC 응용 프로그램을 선택한 후 프로젝트 이름을 입력한다.
4. MFC 응용 프로그램 마법사가 실행되고 다음을 클릭.
5. 응용 프로그램 종류에서 대화상자 기반을 체크해주고 다음 클릭.
6. 사용자 인터페이스 기능에서 정보 상자 체크 해제해주고 다음 클릭.
7. 고급 기능 모두 체크 해제 후 다음 그리고 마침 클릭.
8. 생성된 프로젝트에서 솔루션 뷰를 확인하면 생성된 프로젝트 파일 구조가 보이는데 {프로젝트이름}.cpp 파일을 확인.
9. 그중 IninInstance() 부분이 있다. 내부를 아래와 같이 수정한다.
BOOL CMFCExam01App::InitInstance()
{
CWinApp::InitInstance();
CMFCExam01Dlg dlg;
m_pMainWnd = &dlg;
dlg.DoModal();
return FALSE;
}
- ExamMFC는 프로젝트를 생성할때 입력한 이름이다
10. 마지막으로 대화상자 리소스에서 글꼴 설정을 해주면 된다.
11. 디버깅 없이 실행하면 아래와 같은 출력 결과가 나오면 성공이다.
- printf() 함수로 콘솔 출력 하기
처음 MFC 프로그램을 접하면 마치 Java의 GUI 느낌 이라던지 pyQt5 느낌도 많이 났다. 개인적으로 Drag & Drap으로 창을 구성할 수 있고 더블클릭을 통해서 버튼의 함수를 작성할 수 있다던지 MFC도 생각보다 사용해볼만 한 것 같았다.
그치만 불편한점이 콘솔이 없어서 내가 원하는 부분에 진입을 했는지 잘 몰랐던 기억이 있다. 콘솔로 진입한 곳을 확인하기 위해서는 다음과 같이 한다.
1. 프로젝트 솔루션 뷰로 이동
2. 소스 파일에서 stdafx.cpp 파일로 이동하여
3. 다음과 같이 입력해준다.
#pragma comment(linker, "/entry:WinMainCRTStartup /subsystem:console")
** 주의 ** 마지막에 세미콜론이 생략되어있는 형태로 작성해준다.
그러면 이제 콘솔창과 함께 실행되어지는 것을 확인할 수 있다!!
- MFC 콘솔 응용프로그램 만들기
그렇다면 MFC는 콘솔 프로그램이 없는가? 아니다. 다음과 같이 프로젝트를 만들어보자.
1. 새 프로젝트 생성 후 Visual C++ 선택을 한 뒤 Win32 콘솔 응용프로그램 선택.
2. 프로젝트 이름 작성 후 확인
3. 공용 헤더 파일 추가 대상에서 MFC 체크한 후 마침 클릭.
4. 초기 프로젝트의 폴더 구조는 다음과 같다.
다음 시간에는 MFC에서 사용하는 라이브러리들을 알아보자.
'🌈 프로그래밍 > MFC' 카테고리의 다른 글
[ MFC, C++ ] BYTE to CString, CString to int 형변환 (0) | 2022.01.26 |
---|---|
[ MFC ] list control header 클릭 시 정렬 기능 이벤트 구현 (3) | 2021.11.08 |
[ MFC ] Ontimer와 SetTimer, KillTimer 사용법 (0) | 2021.10.26 |
[ MFC ] AfxBeginThread를 사용한 Timer 예제 (1) | 2021.10.20 |