마이크로소프트 파운데이션 클래스 라이브러리
![]() | |
개발자 | 마이크로소프트 |
---|---|
발표일 | 1992년 |
안정화 버전 | 14.22.27821.0
/ 2019년 7월 24일[1] |
프로그래밍 언어 | C++ |
운영 체제 | 마이크로소프트 윈도우 |
종류 | 개발 라이브러리 |
라이선스 | 사유 |
웹사이트 | MFC 참조 |
마이크로소프트 파운데이션 클래스 라이브러리(Microsoft Foundation Class Library, MFC)는 마이크로소프트에서 만든 윈도우 API를 C++로 둘러 싼 라이브러리이다. 클래스들은 윈도의 공용 컨트롤과 스마트 포인터를 사용하는 창 개체이다.
역사
[편집]이 문단의 내용은 출처가 분명하지 않습니다. (2009년 6월) |
MFC는 1992년 16비트 윈도용 마이크로소프트 C/C++ 7.0 컴파일러에서 처음 도입되었다. 그 당시에는 C++이 소프트웨어 제품 개발 언어로 활용되기 시작하던 때였다. 마이크로소프트는 개발도구 시장에서 경쟁력을 얻기 위해 C++을 활용하여 MFC를 만들었다. MFC의 구조는 후에 시맨틱사에 매각된 매킨토시의 TCL(Think Class Library)에서 영향을 받았다.
볼랜드의 터보 C++과 터보 파스칼에서는 OWL(Object Windows Library)이란 경쟁제품이 있었다. 객체 지향 모델을 더 엄격하게 따르고 있었기 때문에, OWL은 한때 MFC보다 인기 있었다. 하지만 윈도의 새로운 기능에 대한 업데이트가 늦어지게 되면서, 시장 지배력을 잃어버렸다. 그 이후 볼랜드는 OWL의 개발을 중단하고, 이를 대체하는 VCL을 개발하여 델파이와 C++빌더에서 사용하고 있다. C++빌더는 MFC를 라이선스 받아 포함하고 있다.
마이크로소프트에서 MFC가 만들어졌음에도 많은 프로그래머들에게 MFC는 너무 복잡했기 때문에, 마이크로소프트는 상용 소프트웨어 개발에 비주얼 베이직을 쓰라고 권장하였다. MFC와 비주얼 베이직의 후속작으로 Windows Forms가 출시되었으며 C++ 관리 모드 확장으로 쓸 수 있다. 비주얼 스튜디오 2005 출시와 함께 닷넷 프레임워크의 기능들을 더 쉬운 문법으로 쓸 수 있게 되었다.
비주얼 베이직을 강조하면서도 새 버전의 비주얼 스튜디오에는 항상 MFC가 공급되었다. 그래서 많은 프로그래머들이 MFC를 사용하게 되었다.
컴파일러 버전 | MFC 버전 |
---|---|
마이크로소프트 C/C++ 7.0 | MFC 1.0 |
비주얼 C++ 1.0 | MFC 2.0 |
비주얼 C++ 1.5 | MFC 2.5 |
비주얼 C++ 2.0 | MFC 3.0 |
비주얼 C++ 2.1 | MFC 3.1 |
비주얼 C++ 2.2 | MFC 3.2 |
비주얼 C++ 4.0 | MFC 4.0 |
비주얼 C++ 4.1 | MFC 4.1 |
비주얼 C++ 4.2 | MFC 4.2 |
비주얼 C++ 5.0 | MFC 4.21 (mfc42.dll) |
비주얼 C++ 6.0 | MFC 6.0 (mfc42.dll) |
비주얼 C++ .NET 2002 | MFC 7.0 (mfc70.dll) |
비주얼 C++ .NET 2003 | MFC 7.1 (mfc71.dll) |
비주얼 C++ 2005 | MFC 8.0 (mfc80.dll) |
비주얼 C++ 2008 | MFC 9.0 (mfc90.dll) |
비주얼 C++ 2010 | MFC 10.0 (mfc100.dll) |
기능
[편집]MFC가 처음 도입되었을 때 마이크로소프트는 기본적인 C++ 문법에 메시지 처리, 예외 처리, 런타임 처리, 동적 클래스 객체 생성을 위한 매크로를 추가해 C++ 언어를 확장하려 했다. 이런 매크로를 활용한 시스템은 컴파일러의 타입 검사를 무시하므로 버그를 가져올 수 있었다. 32비트 버전의 MFC부터 이것이 개선되었다.
MFC의 가장 큰 장점은 윈도 API를 객체지향적으로 프로그래밍할 수 있다는 것이다. 또한 윈도의 자원과 연관된 형들은 그들을 생성한 객체가 죽게 되면 자동으로 핸들을 해제해 준다는 장점도 있다. 게다가 MFC의 문서/뷰 프레임워크는 데이터 모델과 유저 인터페이스, 제어 로직을 분리한다는 MVC 디자인을 자연스럽게 만들어준다.
하지만 MFC는 다중 운영체제를 지원하지 않는다는 약점이 있다. Mainsoft가 만든 유닉스용 MFC가 있으며[1], 1990년대 마이크로소프트는 맥 OS용 MFC를 만들기도 했지만, 계속 개발하지 않았다.
MFC Feature Pack을 지원하여, 리본 메뉴 등의 UI를 IDE에서 자동으로 작성해준다.
같이 보기
[편집]각주
[편집]- ↑ “Visual Studio 2019 Release Notes”. Msdn.microsoft.com. 2019년 7월 24일에 확인함.