단순 요약


1. API는 C 프로그래밍에서 사용 된다.

2. MFC는 C++ 프로그래밍에서 사용 된다.

즉,  MFC는 API와 같은 것이나 객체 지향 개념이 도입된 C++에서 API를 기능별로 클래스화 한 형태로 만든 것이다.

 

MFC


Microsoft Foundation Class의 약자로 마이크로소프트에서 만든 클래스이다.

 

C++ 언어를 사용하는 경우 API 함수들이 모두 C 형태로 제공되기 때문에 C++의 특징인 객체지향의 형식에도 맞도록 재구성의 필요성이 증대했다. 이에 Microsoft에서 C++ 개발자를 위해 API 함수와 API 함수가 사용하는 구조체들을 모아서 클래스를 만들어 놓았는데 이 클래스의 집합을 MFC라 한다. 

 

MFC의 시초는 AFX(Application Framework)에서 유래되었다 할 수 있다. AFX는 1990년 마이크로소프트가 윈도우 API 함수를 캡슐화하여 만든 라이브러리이다. AFX는 MFC의 전 단계로, 수정을 거쳐서 지금의 MFC가 완성된 것이다. 1993년 이후부터 MFC 라이브러리는 Visual C++에 포함되어 제공되고 있다.

 

 

MFC의 특징


  • 객체 지향 프로그래밍
    • C++의 모든 문법이나 특성을 그대로 이어 받는다.
    • 윈도우의 Object를 포함하는 시각적 객체를 사용한다.

 

  • 이벤트 처리방식
    • 사용자 또는 시스템이 윈도우에 어떤 동작을 했을 경우 그에 대응하여 움직이는 사건의 중심을 프로그램이라 하며 이것을 Event Driven Programming이라 한다.

 

  • 메세지 처리방식
    • 윈도우 이벤트가 발생했을 경우 해당 이벤트를 메세지를 통해 알려주고 그 메시지를 받아서 그에 따른 Output을 한다. 이를 Message Driven Programming이라 한다.

 

MFC의 장점


  • 프로그램 개발 시간을 크게 단축시킨다. 기존의 Win32 API를 이용할 때, 개발자가 직접하던 많은 실행 함수에 대한 번거로움을 개선한다.
  • 객체지향을 이용하여 C++ 프로그래밍을 하면서도 Win32 API 함수를 그대로 사용할 수 있다.
  • 동적 메모리 할당 영역 검증 및 관리, 디버깅 등의 기능을 활용해 버그가 적은 안전한 프로그램을 작성할 수 있다.
  • 다른 운영체제로 이식성이 좋다. MFC로 작성된 프로그램을 매킨토시나 유닉스 버전으로 포팅할 수 있다.
  • 개발자로 하여금 손쉬운 GUI 기반 프로그램 제작 환경을 만들어 준다.

 

MFC의 계층도


기본적으로 MFC 프로젝트를 생성하면 위와 같은 구조도로 이루어져 있으며, 위와 같은 계층 구조에서 크게 벗어나지 않는 범위 내에서 파생 클래스로 모든 클래스를 상속 받아서 만들어지게 된다.

따라서 A부터 Z까지 모든 것을 프로그래머가 프로그래밍을 하는 것이 아니라, 공통적인 부분은 MFC 클래스에서 제공하는 기능을 그대로 이용하고, 고유한 기능만 프로그래머가 커스터마이징하여 넣어주면 되기에 프로그래머 입장에서 손쉽게 코딩할 수 있다.

 

Reference


[1] https://yyman.tistory.com/490

[2] https://coding-factory.tistory.com/141

'Interest > 기타' 카테고리의 다른 글

[Windows Programming] main, wmain, _tmain  (0) 2020.03.18
[C/C++] 예외 핸들링(Exception Handling)  (0) 2020.03.18
[Windows Programming] API와 SDK  (0) 2020.03.18
[Windows Programming] HWND, HINSTANCE, HDC  (0) 2020.03.18
VI 기능 단축키  (0) 2020.03.18

+ Recent posts