MFC(Microsoft Foundation Class Library) 시작하기
MFC
- 윈도우 프로그램을 개발하는 방식 중 하나로 정말 오래된 기술이다. (발표일 1992년)
- 윈도우 운영체제가 제공해주는 함수를 이용하는 Windows API 방식(1세대)에서 C++ 클래스로 감싼 객체지향 프레임워크
- 내부적으로는 Windows API를 사용하지만, 클래스로 구성되어 객체지향적인 프로그래밍이 가능하도록 설계되어 있다.

⭐ MFC 를 배우는 이유 ⭐
C++의 MFC는 정말 오래된 기술로 더이상 지원이나 사용은 잘 안하고 있다.
그렇다면 아직까지도 배우는 이유가 무엇일까?
장비쪽 회사들 처럼 sw의 중요도를 낮게 생각하는 산업군에서는 아직도 사용하는 곳이 많이 있기 때문이다.
기술들이 정말 많지만, 많은 기술들 중에 현재 나한테 필요한 기술을 선택하려면 이론적으로 많이 알고 있어야 한다.
또한, 현재 사람들이 많이 사용하는 기술이 무엇인지 알고 있는것도 필요하다.
MFC 프로젝트 생성
추가 도구 및 기능 설치 > 개별 구성 요소 > 3개 항목 설치


MFC 도구상자
1. 리소스 뷰 추가
보기 > 다른 창 > 리소스 뷰 혹은 Ctrl + Shift + E
2. 작업 뷰 표시
IDD_프로젝트명_DIALOG 접근
3. 컨트롤러 표시
좌측 도구 모음 > 도구 상자

4. 도구 다루기
이후 각각의 도구들을 드래그 앤 드롭하여 다루면 된다.
MFC 컨트롤
MFC에서는 버튼이나 콤보 박스, 리스트 박스와 에디터 박스 등의 컨트롤들도 MFC 클래스로 구성되어 있어
객체 생성 후 사용하면 쉽게 사용할 수 있다.
버튼 생성 및 다루기
View 윈도우에서 WM_CREATE 메시지를 받은 후 이를 처리하는 메시지 핸들러 함수인 OnCreate() 함수에서 버튼 컨트롤을 생성하면 된다.
- HelloMFCView.h 파일 수정 : CButton 객체 생성

- HelloMFCView.cpp 파일 수정 : OnCreate 메소드에 CButton 객체를 이용하여 버튼 생성

MFC 주요 컨트롤과 쓰임새
| 구분 | 컨트롤 | 이름 / 쓰임새 | 관련 클래스 |
| 입력 컨트롤 | Edit Control (편집 상자) | 텍스트 입력창. GetDlgItemText(), SetDlgItemText()로 값 입출력 | CEdit |
| Combo Box (콤보 상자) | 드롭다운 선택 목록. 항목 추가/선택 가능 | CComboBox | |
| List Box (리스트 상자) | 여러 항목을 리스트 형태로 표시 | CListBox | |
| Spin Control (스핀 컨트롤) | 숫자 값 증가/감소 버튼 | CSpinButtonCtrl | |
| 버튼류 | Button (버튼) | 명령 실행 (예: 확인, 취소) | CButton |
| Check Box (체크박스) | 다중 선택 가능 (True/False) | CButton | |
| Radio Button (라디오 버튼) | 여러 중 하나만 선택 가능 | CButton | |
| 출력 컨트롤 | Static Text (정적 텍스트) | 안내 문구, 제목 표시용 (수정 불가) | CStatic |
| Group Box (그룹 상자) | 관련 컨트롤들을 시각적으로 묶을 때 사용 | CButton (BS_GROUP 스타일) | |
| 목록/표 컨트롤 | List Control (리스트 컨트롤) | 표 형태의 데이터 표시 (아이콘, 세부보기 등 지원) | CListCtrl |
| Tree Control (트리 컨트롤) | 계층적 데이터 구조 표시 (예: 폴더 구조) | CTreeCtrl | |
| Tab Control (탭 컨트롤) | 여러 페이지로 UI 구성 | CTabCtrl | |
| 고급 입력 컨트롤 | Date Time Picker | 날짜/시간 선택용 컨트롤 | CDateTimeCtrl |
| Slider Control (슬라이더) | 값의 범위를 슬라이드로 조정 | CSliderCtrl | |
| Progress Control (진행 바) | 작업 진행률 표시 | CProgressCtrl | |
| 기타 컨트롤 | Picture Control (픽처 컨트롤) | 이미지나 비트맵 표시용 | CStatic |
| Hot Key Control | 단축키 지정 | CHotKeyCtrl | |
| IP Address Control | IP 주소 입력용 (IPv4 형식) | CIPAddressCtrl |
https://blog.naver.com/tipsware/221307415937
김성엽의 MFC 이야기
여기에 링크된 글 목록은 MFC(Microsoft Foundation classes)를 사용하여 Windows 응용 프로그램을 ...
blog.naver.com
https://dawitblog.tistory.com/3
[C++,MFC]MFC 프로그래밍이란 무엇인가? + 기본 컨트롤러
Java 해야하는데 학교에서는 C++을 가르친다. 그리고 이번에 교수님이 C++과 MFC라이브러리를 이용한 윈도우 프로그램에 대하여 설명해 주셨다. 솔직히 조금 뜬금없었다. MFC가 뭐지? 갑자기 이걸 왜
dawitblog.tistory.com
MFC 학습용
https://blog.naver.com/tipsware/221307415937
김성엽의 MFC 이야기
여기에 링크된 글 목록은 MFC(Microsoft Foundation classes)를 사용하여 Windows 응용 프로그램을 ...
blog.naver.com