MFC(Microsoft Foundation Class) 라이브러리는 많은 Win32 및 COM API에 대한 개체 지향 래퍼를 제공합니다. 간단한 데스크톱 애플리케이션을 만드는 데도 사용되지만, 여러 컨트롤 간의 매우 복잡한 사용자 인터페이스를 개발해야 하는 경우에도 매우 유용합니다.

 

Visual  Studio C++ 에서 작성되며, 로봇제어 등, 산업에서 소프트웨어의 성능 등을 이유로 사용하는 C++ 언어를 사용하고 있다.

 

윈도우 -> .Net -> C++ 의 패키징을 거쳐 나온 API로 매크로를 통해 C++ 함수와 윈도우 창을 구성하는 객체의 메세지를 맵핑하여 윈도우 호출에 의해 C++의 기능을 사용할 수 있도록 만든 API이다.

윈도우에서 정해놓은 규칙을 그대로 사용하고 있고 Microsoft에서 MFC의 API DOC를 참고하여 각종 Class와 메시지, 매크로 등의 기능을 그때 그때 확인하고 사용한다.

 

예를 들자면, Cwin Class를 상속받은 My Dialog를 포함한 My Dialog에 포함된 각 컴포넌트와 매칭되는 Class를 함수마법사를 통해 상속받고 필요에 따라 맴버변수를 사용하거나, 추가기능을 구현하거나, 해당 Class에 대한 API Doc 를 참고하여 해당 Class에 메소드를 참고하여 작성한다.

작성된 메소드는 afxmsg.h에서 정의된 매크로를 통해 컴포넌트 메시지_ID와 동적 바인딩 매핑되며 Window, .Net 등에서 매크로를 호출하면 매크로가 메시지를 호출하여 해당 메소드가 실행되는 방식으로 동작한다.

 

MFC의  구조를 이해하면 CObject와 그 하위의 상속자간의 종속 관계를 나타낸 그림으로 아래와 같이 나타낸다.

이런 관계는 MFC의 Dialog 컴포넌트에 클래스를 추가하여 사용할 메소드를 사용하려 doc를 확인하는 과정에서도 확인할 수 있다.

 

MFC 구조

 

하위 클래스에서 메소드를 탐색하려 정의를 찾는 과정에서 항상 상위 클래스의 상속을 받는 형태로,

객체지향프로그래밍의 특성을 그대로 표현한다.

 

객체지향 프로그래밍이 입문자에게 암시하는 것은 프로세스를 개발할 때에 컴퓨터 처럼 생각할 필요가 없으며,

컴퓨터가 사람처럼 생각해야 한다라는 것이기도 하다.

+ Recent posts