나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-11-09 14:03:06

MFC


파일:나무위키+유도.png  
은(는) 여기로 연결됩니다.
다른 의미에 대한 내용은 MFC(동음이의어) 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
참고하십시오.
파일:Microsoft 로고.svg파일:Microsoft 로고 화이트.svg
{{{#!wiki style="margin:0 -10px -5px; min-height:calc(1.5em + 5px); word-break:keep-all"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-6px -1px -11px"
<colbgcolor=#393939,#737373><colcolor=#fff>제품군
하드​웨어Surface · Xbox · HoloLens · PixelSense · Zune · Pluton · IVAS
소프트​웨어Windows · Office · Edge · Media Player · Hyper-V · Defender · Visual Studio Code · Visual Studio · Windows Terminal · Microsoft Store · Xbox App · PowerToys · Internet Explorer · MS-DOS · Windows Movie Maker · Autoruns · Clipchamp
서비스Microsoft Azure · OneDrive · Microsoft Copilot · Bing · LinkedIn · Microsoft Docs · Skype · MSN · 정품인증 · Xbox Game Pass · Xbox Cloud Gaming · Xbox network
관련 기술ASF · ASP · Blazor · COM · DCOM · DirectX · 파일 시스템(FAT · NTFS · ReFS) · MFC · .NET(.NET Core · .NET Standard · C# · F# · Visual Basic .NET · Windows Forms · WPF · UWP · .NET MAUI · ASP.NET · ML.NET) · OLE · Q# · Silverlight · Visual Basic · VBA · WASAPI · Windows 커널 · Windows 디자인 · Windows API · Windows Runtime(UWP · WinUI 3) · WMA · WMV · Xamarin · XNA · 하복 엔진 · SAMI · PowerShell · Windows Modern Standby
산하 계열사 및 사업부GitHub · .NET Foundation · Microsoft Gaming · LinkedIn
관련 인물빌 게이츠(은퇴) · 폴 앨런(은퇴) · 스티브 발머(퇴사) · 게이브 뉴웰(퇴사) · 마이크 이바라(퇴사)
사티아 나델라 · 필 스펜서 · 브래드 스미스
기타제니맥스 미디어 인수 · 액티비전 블리자드 인수 · 시작 메뉴 · 빌 게이츠의 굴욕
관련 틀365 제품군 · 하드웨어 제품군 · Surface 제품군 · Windows 제품군}}}}}}}}}

Microsoft Foundation Classes

MSDN의 MFC 페이지

1. 개요2. 사용 목적3. 단점4. MFC 대체 및 후속 GUI SDK

1. 개요

Microsoft Windows 운영체제 환경에서 작동하는 GUI 응용프로그램을 개발하기 위해 Windows APIC 언어 함수들을 Wrapping 하여 C++ 언어의 클래스화 한 GUI 라이브러리로, 1992년 발표되었다.

윈도우 환경에서 COM(Component Object Model) 개발을 위한 라이브러리인 ATL(Active Template Library)과 CString 등의 기반 클래스를 공유하는 등 매우 밀접한 관련이 있다.

비주얼 스튜디오의 유료 버전과 Community(개인 사용자용)에는 기본으로 포함되어 있다. 무료인 'Express' 버전에는 MFC와 ATL이 포함되지 않으나 Express 버전 자체가 단종되었다.

2. 사용 목적

Microsoft Windows용 GUI 응용프로그램을 개발하기 위해 별도의 라이브러리 없이 운영체제가 제공하는 C언어 기반의 Windows API를 직접 사용할 수도 있으나, Windows API는 단순히 운영체제의 여러 기능들을 노출시켜주는 함수들의 집합일 뿐이기 때문에 복잡한 UI를 작성하는 등의 고차원적인 작업을 할 때에는 필연적으로 코드 노가다가 수반되어 난이도가 높고 생산성이 떨어진다. 그리고 최신의 윈도 컨트롤과 같은 고차원적인 기능들은 Windows API가 아닌 COM 라이브러리로만 쓸 수 있기 때문에 Windows API만으로는 한계가 있다. 그래서 이걸 그나마 좀 편하게 C++ 클래스 형태로 쓸 수 있도록 해주는 것이 바로 MFC이다.

C++언어 기반의 MFC를 사용할 경우 Win32 API로 C 프로그래밍을 하는것보다는 쉽기 때문에 1990년대 부터 2000년대 중반까지 윈도우즈용 GUI 응용프로그램 개발을 위한 라이브러리로 사용되었었다[1].

현재는 과거 개발된 어플리케이션 및 라이브러리의 유지보수가 주된 용도이다. 해외의 경우 MFC 개발자 수요가 아직도 약간 있으나 국내에는 MFC 프로그래머에 대한 수요는 유지보수를 제외하곤 없다. 모바일 환경이 대두되었을뿐만 아니라, 데스크톱 응용프로그램의 개발 환경도 .NET Framework를 기반으로 하는 WinForms, WPF 등과 웹을 기반으로 하는 Electron 등이 등장하면서 더이상 신규 개발 프로그램에서 굳이 MFC를 선택할 필요는 없게 되었다.

MS에서 개발하는 프로그램 중 Microsoft Office나 윈도 운영체제 자체 등 일반 사용자에게 제공되는 제품은 MFC를 사용하지 않는다. MFC를 사용하여 개발된 것 중 가장 유명한 것은 Visual Studio 6.0에 포함되어 있는 Visual C++ 6.0 IDE일 것이다. 하지만 .NET Framework가 발표되면서 현재의 Visual Studio는 닷넷의 WPF로 개발되고 있다.

3. 단점


C++ 언어와 윈도우 운영체제에 대한 이해가 있다면 못 써먹을 정도의 물건은 아니다. MFC는 C++ 라이브러리이며, 윈도우 운영체제를 다루기 위한 것이므로 이 둘에 대한 선행 학습이 이루어져야 한다.

4. MFC 대체 및 후속 GUI SDK

MFC는 2015년 기점으로 사실상 개발이 중지되었다고 할수 있으며 2000년초 개발된 MFC 유지보수 정도나 하고 있는 소프트웨어 개발사들은 앞으로 경쟁력을 갖추기가 더욱 어려워지고 있다. 신규 프로그램을 MFC로 시작하는 업체는 국내외를 찾아봐도 없다.

MFC는 1990년대 시작한 1세대 GUI SDK라고 할 수 있으며 그 이후 다수의 GUI SDK가 출시 되고 있다. GUI 라이브러리 문서 참조.


[1] 비슷한 시기 대체제로는 Object Pascal 언어 기반의 델파이Visual Basic이 있었다.[2] 그런데 비주얼 스튜디오가 마이너 업데이트를 할 때에도 MFC 마이너 버전은 꼬박꼬박 올라가다 보니 2024년 10월 8일자 기준으로 마이너 버전이 무려 40까지 올라갔다.[3] AFX 팀에서 관리하는 함수가 얼마나 많냐면 윈도우가 한번 업그레이드 되었을 때, MFC는 반년 뒤에 업그레이드가 될 정도라고 하니...