마이크로소프트 파운데이션 클래스 라이브러리
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
마이크로소프트 파운데이션 클래스 라이브러리(MFC)는 1992년 마이크로소프트의 C/C++ 컴파일러와 함께 16비트 윈도우용으로 처음 도입된 C++ 클래스 라이브러리이다. 윈도우 API를 객체 지향적으로 래핑하여 윈도우 애플리케이션 개발을 지원하며, 윈도우 메시지 처리, 예외 처리, 직렬화 등의 기능을 제공한다. MFC는 비주얼 스튜디오의 여러 버전과 함께 발전해 왔으며, 리본 인터페이스 및 다이렉트2D 래퍼 등 다양한 기능을 추가했다. MFC는 윈도우 API의 래퍼 클래스 그룹 및 프레임워크로, 윈도우 API를 객체지향적으로 프로그래밍 할 수 있다는 장점이 있지만, 다중 운영체제를 지원하지 않고, 다른 RAD 도구에 비해 생산성이 떨어진다는 한계가 있다.
더 읽어볼만한 페이지
- 마이크로소프트 API - 윈도우 API
윈도우 API는 마이크로소프트 윈도우 운영 체제에서 응용 프로그램이 시스템 기능에 접근하도록 돕는 인터페이스 집합이며, 다양한 버전으로 발전해 왔고, 현재 Win32가 널리 사용되며, 유연성을 제공하지만 복잡하다는 단점을 보완하기 위해 다양한 래퍼 라이브러리가 개발되었다. - 마이크로소프트 API - WinFS
WinFS는 마이크로소프트가 개발한 파일 시스템으로, 검색 기능 내장 및 메타데이터 관리를 통해 데이터 관리 효율성을 높이는 것을 목표로 했으나 별도 제품으로 출시되지는 못하고 핵심 기능들이 윈도우 비스타 이후 기술에 통합되었다.
마이크로소프트 파운데이션 클래스 라이브러리 - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
![]() | |
개발사 | 마이크로소프트 |
출시일 | 1992년 |
최신 버전 | 14.22.27821.0 |
최신 출시일 | 2019년 7월 24일 |
프로그래밍 언어 | C++ |
운영체제 | 마이크로소프트 윈도우 |
라이선스 | 사유 소프트웨어 |
웹사이트 | 마이크로소프트 파운데이션 클래스 라이브러리 |
개요 | |
종류 | 개발 라이브러리 |
용도 | 윈도우 API를 객체 지향 프로그래밍 방식으로 래핑 |
특징 | |
아키텍처 | 모델-뷰-컨트롤러 (MVC) 아키텍처 기반 |
주요 기능 | 응용 프로그램 프레임워크 제공 그래픽 사용자 인터페이스 (GUI) 요소 제공 데이터베이스 접근 지원 네트워킹 지원 멀티스레딩 지원 COM 지원 |
역사 | |
최초 출시 | Visual C++ 1.0과 함께 출시 |
주요 버전 | MFC 1.0 MFC 2.0 MFC 3.0 MFC 4.0 MFC 4.2 MFC 5.0 MFC 6.0 MFC 7.0 (Visual Studio .NET 2002) MFC 7.1 (Visual Studio .NET 2003) MFC 8.0 (Visual Studio 2005) MFC 9.0 (Visual Studio 2008) MFC 10.0 (Visual Studio 2010) MFC 11.0 (Visual Studio 2012) MFC 12.0 (Visual Studio 2013) MFC 14.0 (Visual Studio 2015) MFC 14.1 (Visual Studio 2017) MFC 14.2 (Visual Studio 2019) |
기술적 세부 사항 | |
구현 언어 | C++ |
종속성 | 윈도우 API |
플랫폼 | 윈도우 |
사용 예시 | |
응용 분야 | 데스크톱 응용 프로그램 클라이언트-서버 응용 프로그램 데이터베이스 응용 프로그램 게임 |
장점 및 단점 | |
장점 | 객체 지향 프로그래밍 지원으로 개발 생산성 향상 윈도우 API에 대한 쉬운 접근 제공 다양한 기능 제공으로 개발 편의성 증대 |
단점 | 윈도우 플랫폼에 종속적 C++ 언어에 대한 이해 필요 COM 등 일부 기술에 대한 학습 필요 |
2. 역사
MFC는 1992년 16비트 버전의 윈도우용 마이크로소프트 C/C++ 7.0 컴파일러와 함께 처음 도입되었다. 당시 C++은 상용 소프트웨어 개발 언어로 활용되기 시작하던 때였다. 마이크로소프트는 개발도구 시장에서 경쟁력을 얻기 위해 C++을 활용하여 MFC를 만들었다. MFC의 구조는 후에 시만텍사에 매각된 매킨토시의 TCL(Think Class Library)에서 영향을 받았다.[2]
보르랜드의 터보 C++과 터보 파스칼에는 OWL(Object Windows Library)이란 경쟁 제품이 있었다. 객체 지향 모델을 더 엄격하게 따르고 있었기 때문에, OWL은 한때 MFC보다 인기 있었다. 하지만 윈도의 새로운 기능에 대한 업데이트가 늦어지면서, 시장 지배력을 잃어버렸다. 그 이후 보르랜드는 OWL의 개발을 중단하고, 이를 대체하는 VCL을 개발하여 델파이와 C++빌더에서 사용하고 있다. C++빌더는 MFC를 라이선스 받아 포함하고 있다.[6]
마이크로소프트는 MFC가 복잡하다는 이유로 상용 소프트웨어 개발에 비주얼 베이직을 권장하기도 했지만, 비주얼 스튜디오 새 버전에 MFC를 계속 공급하여 많은 프로그래머들이 MFC를 사용하게 되었다. MFC와 비주얼 베이직의 후속작으로 Windows Forms가 출시되었으며 C++ 관리 모드 확장으로 쓸 수 있다. 비주얼 스튜디오 2005 출시와 함께 닷넷 프레임워크의 기능들을 더 쉬운 문법으로 쓸 수 있게 되었다.
Visual C++ 4.2에서 및 ActiveX 등의 인터넷 관련 클래스가 추가된 후, MFC 자체에는 큰 변화가 없었다. Visual C++ 7.0 (Visual C++ .NET 2002)에서 MFC와 ATL의 일부가 통합되었지만, Visual C++ 2008 (Visual Studio 2008) 서비스 팩 1 적용 시 설치되는 "MFC Feature Pack"에서 MFC는 대폭적인 진화를 이루었다. Office 2007 스타일의 리본 인터페이스를 구축하기 위한 "CMFCRibbon~" 클래스나, Visual Studio 2005 스타일의 스마트 도킹 윈도우를 실현하는 CDockablePane 클래스 등, 100개 이상의 클래스가 추가되었다.[3], [4] 이러한 클래스를 이용하는 경우, 개발자는 Feature Pack 설치 후 MFC 애플리케이션 마법사에 추가되는 리본 UI 또는 Visual Studio UI 템플릿을 선택하여 자동 생성되는 프레임워크를 기반으로 코딩을 진행한다. 다만 .NET Framework 개발과는 달리, RAD가 아닌 코드 기반으로 GUI를 구축해야 하므로, MFC 프로그래밍에 정통해야 한다. Windows 7 SDK (Windows SDK for Windows 7 and .NET Framework 3.5 SP1)에도 리본 인터페이스 구현을 위한 "리본 프레임워크" API군이 추가되었지만, COM 컴포넌트를 이용한 API 프로그래밍이며, 리본 프레임워크 컴포넌트가 도입된 것은 Windows 7 및 Windows Vista SP2 Platform Update 이후의 OS이므로, 네이티브 (언매니지드) 리본 UI 애플리케이션 개발에는 MFC가 유력한 후보가 될 수 있다.
Visual C++ 2010 (Visual Studio 2010)에서는, 리본 UI를 시각적으로 편집하는 기능 (리본 디자이너)[28]이 리소스 편집기에 추가되었으며, 윈도우 비스타 이후 OS에 구현되어 있는 "작업 대화 상자" 및 "재시작 관리자" 등을 이용하기 위한 기능도 추가되었다[29] . 높은 DPI 환경에도 표준 대응하게 되었다 (System DPI Aware)[30]. 또한, Visual C++ 2010에 서비스 팩 1을 적용하면[31], Direct2D[32] 래퍼[33] 및 Windows Animation Manager[34] 래퍼[35] 기능 (클래스 라이브러리)이 추가된다.
Visual C++ 2015에서는 동적 레이아웃에도 대응[36]하는 등, .NET Framework와는 또 다른 방향의 기능 확장이 계속되고 있다.
2. 1. MFC 버전
MFC는 비주얼 스튜디오 버전에 따라 발전해왔다. 각 버전은 mfcXX.dll 형태로 제공되며, 버전 번호는 `_MFC_VER` 매크로로 정의된다. 비주얼 C++ 2005 이후부터는 Side-by-Side 어셈블리 방식으로 설치되어 여러 버전이 공존할 수 있다.Visual C++에 포함된 MFC 버전 목록은 다음과 같다.
VC 제품 버전 | MFC 버전 | _MFC_VER | 비고 |
---|---|---|---|
Microsoft C/C++ 7.0 | MFC 1.0 | 0x0100 | |
비주얼 C++ 1.0 | MFC 2.0 | 0x0200 | |
비주얼 C++ 1.5 | MFC 2.5 | 0x0250 | |
비주얼 C++ 2.0 | MFC 3.0 | 0x0300 | |
비주얼 C++ 2.1 | MFC 3.1 | 0x0310 | |
비주얼 C++ 2.2 | MFC 3.2 | 0x0320 | |
비주얼 C++ 4.0 | MFC 4.0 | 0x0400 | |
비주얼 C++ 4.1 | MFC 4.1 | 0x0410 | |
비주얼 C++ 4.2 | MFC 4.2 | 0x0420 | |
비주얼 C++ 5.0 | MFC 4.21 (mfc42.dll) | 0x0421 | |
비주얼 C++ 6.0 | MFC 6.0 (mfc42.dll) | 0x0600 | 윈도우 XP 이후 OS에 기본 설치되어 있다. |
비주얼 C++ .NET 2002 | MFC 7.0 (mfc70.dll) | 0x0700 | 일반적으로 응용 프로그램에 첨부만 된다. MS07-012[43]등 보안 문제가 발견되었다. |
비주얼 C++ .NET 2003 | MFC 7.1 (mfc71.dll) | 0x0710 | 일반적으로 응용 프로그램에 첨부만 된다. MS07-012 등 보안 문제가 발견되었다. |
비주얼 C++ 2005 | MFC 8.0 (mfc80.dll) | 0x0800 | 서비스 팩 및 보안 패치를 적용하면 여러 버전이 설치된다. |
비주얼 C++ 2008 | MFC 9.0 (mfc90.dll) | 0x0900 | 서비스 팩 및 보안 패치를 적용하면 여러 버전이 설치된다. |
비주얼 C++ 2010 | MFC 10.0 (mfc100.dll) | 0x0A00 | |
비주얼 C++ 2012 | MFC 11.0 (mfc110.dll) | 0x0B00 | |
비주얼 C++ 2013 | MFC 12.0 (mfc120.dll) | 0x0C00 | |
비주얼 C++ 2015 | MFC 14.0 (mfc140.dll) | 0x0E00 | |
비주얼 C++ 2017 | MFC 14.0 (mfc140.dll) | 0x0E00 | 비주얼 C++ 컴파일러의 내부 버전 번호는 14.1이지만, CRT 라이브러리와 마찬가지로 MFC의 내부 버전 번호는 14.0으로 유지된다. |
비주얼 C++ 2019 | MFC 14.0 (mfc140.dll) | 0x0E00 | 비주얼 C++ 컴파일러의 내부 버전 번호는 14.2이지만, CRT 라이브러리와 마찬가지로 MFC의 내부 버전 번호는 14.0으로 유지된다. |
MFC는 윈도 API의 일부를 C++ 클래스로 래핑하여 객체 지향 프로그래밍을 가능하게 한다. 윈도 메시지 처리, 예외 처리, 런타임 형식 식별(RTTI), 직렬화, 동적 클래스 인스턴스화를 위한 매크로를 제공한다.[7] 윈도 자원과 연관된 형들은 객체 소멸 시 자동으로 핸들을 해제한다.
MFC는 Windows API의 일부를 C++ 클래스로 래핑하는 라이브러리로, 기본적인 응용 프로그램 프레임워크를 제공한다. 미리 정의된 창 및 공통 컨트롤에 대한 클래스뿐만 아니라 다음과 같은 다양한 클래스들을 갖추고 있다.
Visual C++ .NET 2003까지 C/C++ (CRT) 및 MFC 런타임 라이브러리는 개발 환경 설치와 함께 Windows 시스템 폴더 (%WinDir%\System32 또는 %WinDir%\SysWOW64)에 설치되었지만[44], 윈도우 XP 이후의 경우 비주얼 C++ 2005 및 2008은 DLL 지옥을 해결하기 위해 %WinDir%\WinSxS 이하의 amd64_microsoft.vc80.mfc_*, ia64_microsoft.vc80.mfc_*, x86_microsoft.vc80.mfc_* 등 폴더에 Side-by-Side 어셈블리로 설치된다. 이에 따라 서비스 팩을 적용한 런타임을 설치하거나 런타임에 보안 패치를 적용하면 이전 버전의 런타임은 덮어쓰기되지 않고 새 버전의 런타임이 추가 설치되므로 여러 다른 버전이 공존할 수 있다. 또한 Visual C++ .NET 2003까지는 MFC를 사용하는 응용 프로그램의 실행 프로그램이 있는 폴더에 MFC 런타임을 복사하여 재배포하면 MFC 런타임이 설치되지 않은 최종 사용자 환경에서도 실행할 수 있었지만, 비주얼 C++ 2005 및 2008에서는 이와 같은 Side-by-Side 어셈블리 형태를 취하므로 단순히 복사하여 첨부하는 것만으로는 실행할 수 없다. '''비주얼 C++ 2005 및 2008을 사용하여 작성된 MFC 응용 프로그램을 최종 사용자 환경에서 실행'''하려면 다음과 같은 방법이 있다[45] [46]
# 최종 사용자 환경에 비주얼 C++ 런타임 패키지를 별도로 설치한다.
# 응용 프로그램을 빌드할 때 CRT/MFC를 정적 링크한다.
# 응용 프로그램 매니페스트를 사용하여 CRT/MFC 런타임을 개인 어셈블리로 만든다(윈도우 XP 이후).
첫 번째 방법은 최종 사용자의 부담이 증가하지만, 보안 측면에서 가장 안전한 방법이다. 설치된 런타임 DLL 그룹은 Microsoft Update 등을 통해 제공되는 보안 패치의 적용 대상이 된다(단, 앞서 언급했듯이 DLL 자체는 보안 패치에 의해 수정되지 않는다). 또한, 최종 사용자 런타임의 설치 관리자는 Microsoft에서 무상으로 제공하며, 개발자가 재배포할 수도 있다.
두 번째 방법은 최종 사용자의 수고를 덜 수 있지만, 응용 프로그램 빌드 시 링크 시간이 증가하고 실행 프로그램의 파일 크기가 비대해진다는 단점이 있다[47]。 또한, 보안 패치 적용 대상에서 제외된다(참고로 /clr 옵션을 활성화하여 .NET 하이브리드 응용 프로그램을 만드는 경우 CRT/MFC 라이브러리를 정적으로 링크할 수 없다).
세 번째 방법은 응용 프로그램에 MFC 런타임을 포함하기 위한 방법이며, 정적 링크하는 경우와 마찬가지로 최종 사용자의 수고를 덜 수 있다.
비주얼 C++ 2010 이후 CRT 및 MFC 런타임의 Side-by-Side 배치 방식은 폐지되었으며, 다시 비주얼 C++.NET 2003 이전과 마찬가지로 Windows 시스템 폴더에 설치된다. 서비스 팩 및 보안 패치가 적용되면 시스템 폴더 내 DLL 파일(mfc100.dll 등)이 수정된다.
3. 기능
MFC의 문서/뷰 프레임워크는 데이터 모델과 사용자 인터페이스, 제어 로직을 분리하는 MVC 디자인을 지원한다. MFC Feature Pack은 리본 메뉴 등의 UI를 IDE에서 자동으로 작성할 수 있게 해준다.[4]
MFC는 정적 라이브러리를 연결하거나 MFC DLL을 추가하여 사용할 수 있다. MFC는 Windows 애플리케이션에서 메시지 핸들러나 윈도우 프레임워크 등 기본적인 부분을 미리 패키지화했을 뿐만 아니라, GDI 객체, 장치 컨텍스트, 스레드, 소켓, FTP/HTTP 등의 인터넷 서비스, 가변 길이 문자열, 배열 및 리스트와 같은 컨테이너 등 일반적으로 애플리케이션에서 자주 사용되는 클래스를 갖추고 있다.
4. 특징
MFC는 처음 소개되었을 때 Windows 메시지 처리(메시지 맵[7]을 통해), 예외 처리, 실행 시간 형식 식별(RTTI), 직렬화, 동적 클래스 인스턴스화를 위한 C++ 매크로를 제공했다. 메시지 처리 매크로는 불필요한 가상 함수 테이블 사용을 피하고 메모리 소비를 줄이는 것을 목표로 했다.
SDK를 사용하여 윈도우 API를 직접 호출하는 것보다 Visual C++ 통합 환경과의 친화성이 높아 개발이 용이하다. 그러나 MFC에 과도하게 의존하는 프로그램을 작성하면 다른 운영 체제로의 이식이 어려워진다는 문제점도 있다.
5. 한계
MFC는 다중 운영체제를 지원하지 않는다는 약점이 있다. Mainsoft가 만든 유닉스용 MFC가 있으며, 1990년대 마이크로소프트는 맥 OS용 MFC를 만들기도 했지만, 계속 개발하지는 않았다.
6. 비판
MFC는 `CDocument`, `CView` 등 기본적인 클래스 사양이 난해하며, 윈도우 메시지, 명령 등 Win32 API의 기본을 이해해야 사용할 수 있다.[38] 클래스는 기본적으로 단일 상속만 가능하여 계층이 깊어지고, friend 클래스가 다용되어 직교성이 낮다.
함수[38], 구조체, 클래스[39] 등은 전역 네임스페이스에 존재하고, 매크로가 많이 사용되어 이름 충돌이 발생하기 쉽다. MFC 시리얼라이즈 기능을 사용하는 클래스는 전역 네임스페이스에서 정의해야 한다.
실행 시간 형식 정보나 예외 처리 기구 등은 독자적인 매크로를 사용한 구현으로, 표준 C++와의 통일성이 없다. 표준 C++의 실행 시간 형식 정보 및 예외 처리 기구와 함께 사용할 수는 있다.
변수명에 오래된 시스템 헝가리안 표기법[40] [41]을 사용하여 최신 코딩 스타일에 맞지 않는다.
표준 규격 위반을 범하고 있다.[42]
7. MBCS와 유니코드
MFC는 애플리케이션 컴파일 및 빌드 시 설정에 따라 MBCS 버전과 유니코드 버전 라이브러리를 암묵적으로 링크한다.[48] MBCS 버전은 ANSI 멀티바이트 문자 집합(예: Shift_JIS)을 사용하고, 데이터는 주로 `char`형 배열에 저장된다. 유니코드 버전은 UTF-16LE를 사용하며, 데이터는 주로 `wchar_t`형 배열에 저장된다. Windows OS 내부 문자 코드는 UTF-16LE이므로, 애플리케이션 내부에서 UTF-8이나 UTF-32를 사용하는 경우는 드물다.
MFC/ATL, 표준 C/C++ 런타임 라이브러리 (CRT), Win32 API는 MBCS와 유니코드 양쪽 지원을 위한 매크로[49], `TCHAR`, `LPTSTR`, `LPCTSTR`형, `CString` 클래스 등을 제공한다.
Windows NT 계열의 첫 OS인 Windows NT 3.1은 처음부터 UCS-2 유니코드를 지원했다.[50] UTF-16 서러게이트 페어는 Windows XP부터 지원한다.[51] Windows 9x 계열은 유니코드를 지원하지 않아 오랫동안 MBCS가 사용되었다. 그러나 국제화 요구에 따라 Visual Studio 2005부터 프로젝트 기본 설정이 유니코드로 변경되었고, Visual Studio 2013부터는 MBCS 버전 MFC/ATL 라이브러리가 권장되지 않아 인스톨러에 포함되지 않는다. (유니코드 버전만 포함) 단, Visual Studio 2013용 MBCS 버전 MFC 라이브러리 DLL은 마이크로소프트 공식 웹사이트에서 다운로드할 수 있다. Visual C++ 재배포 가능 패키지에는 2013년 이후에도 MBCS 버전 MFC 런타임 DLL이 포함되어 있어, MBCS 버전 MFC 런타임을 재배포하기 위한 추가 절차는 필요하지 않다.
Windows 8/Windows RT의 Windows 스토어 앱(Windows 10의 유니버설 Windows 플랫폼 앱)은 C++/CX영어 확장 언어로 개발할 수 있지만, MFC는 사용할 수 없다. Windows 스토어 앱에서는 멀티바이트 문자열 API를 사용할 수 없고, ASCII 또는 유니코드 문자열만 사용할 수 있다.[52]
참조
[1]
웹사이트
Visual Studio 2019 Release Notes
https://docs.microso[...]
Msdn.microsoft.com
2019-07-24
[2]
웹사이트
Visual C++ Express Overview
http://www.microsoft[...]
[3]
웹사이트
Visual C++ 2008 Feature Pack shipped
http://blogs.msdn.co[...]
Blogs.msdn.com
2008-04-26
[4]
웹사이트
Quick Tour of New MFC functionality
https://devblogs.mic[...]
Blogs.msdn.com
2007-11-09
[5]
웹사이트
Visual Studio Express Edition FAQ
http://www.microsoft[...]
Microsoft.com
2012-01-06
[6]
웹사이트
Microsoft Buys Into Inprise, Settles Disputes
http://www.techweb.c[...]
Techweb.com
2012-01-06
[7]
웹사이트
Creating Your Own Message Maps
http://www.informit.[...]
Inform IT
[8]
웹사이트
MFC Update Powered By BCGSoft
http://msdn2.microso[...]
Msdn2.microsoft.com
2007-11-09
[9]
웹사이트
Visual C++ 2008 Feature Pack Release Download Page
http://www.microsoft[...]
Microsoft.com
[10]
웹사이트
The Microsoft C++ Compiler Turns 20!
https://devblogs.mic[...]
Microsoft
2012-02-03
[11]
웹사이트
Happy 25th Birthday MFC!
https://devblogs.mic[...]
Microsoft
2017-02-27
[12]
웹사이트
MS11-025: Vulnerability in Microsoft Foundation Class (MFC) Library could allow remote code execution: April 12, 2011
https://support.micr[...]
2019-06-10
[13]
웹사이트
Microsoft Security Bulletin MS09-035 - Moderate: Vulnerabilities in Visual Studio Active Template Library Could Allow Remote Code Execution (969706)
http://www.microsoft[...]
2012-11-19
[14]
웹사이트
Protect your computer from the Active Template Library (ATL) security vulnerability
http://www.microsoft[...]
2010-10-29
[15]
웹사이트
Microsoft Visual Studio 2005 Service Pack 1 MFC Security Update
http://www.microsoft[...]
2012-11-19
[16]
웹사이트
Where can I download Visual C++ Redistributables?
https://blogs.techne[...]
2017-09-04
[17]
웹사이트
FIX: "HRESULT: 0x80073715" error when you install an application by using an .msi file if the file is merged with merge modules for the Visual C++ 2005 runtime library
http://support.micro[...]
2021-01-25
[18]
웹사이트
vcredist/source_links/README.md > Source Links Archive
http://github.com/ab[...]
[19]
웹사이트
Visual C++ - Exploring New C++ and MFC Features in Visual Studio 2010
http://msdn.microsof[...]
2012-11-19
[20]
웹사이트
Update for Visual C++ 2013 and Visual C++ Redistributable Package
http://support.micro[...]
2017-01-08
[21]
웹사이트
Update for Visual C++ 2013 and Visual C++ Redistributable Package
http://support.micro[...]
2017-01-08
[22]
웹사이트
Update for Visual C++ 2013 Redistributable Package
https://support.micr[...]
2019-06-10
[23]
웹사이트
Visual Studio 2015 Update 1
https://www.visualst[...]
2016-06-12
[24]
웹사이트
Visual Studio 2015 Update 2
https://www.visualst[...]
2016-06-12
[25]
웹사이트
Visual Studio 2015 Update 3
https://www.visualst[...]
2016-06-28
[26]
웹사이트
Microsoft Visual Studio 2015 Update 3 (KB3165756)
https://msdn.microso[...]
2016-08-28
[27]
웹사이트
C++ binary compatibility between Visual Studio versions
http://docs.microsof[...]
[28]
웹사이트
リボン デザイナー (MFC)
http://msdn.microsof[...]
[29]
웹사이트
Visual C++ - Visual Studio 2010 の C++ と MFC での新機能の詳細
http://msdn.microsof[...]
[30]
웹사이트
MFC applications now default to being DPI-aware | Visual C++ Team Blog
https://web.archive.[...]
[31]
웹사이트
MFC Additions for Visual Studio 2010 SP1 | Microsoft Docs
https://docs.microso[...]
[32]
웹사이트
Direct2D (Windows)
http://msdn.microsof[...]
[33]
웹사이트
チュートリアル: MFC プロジェクトへの D2D オブジェクトの追加
https://msdn.microso[...]
[34]
웹사이트
Windows Animation Manager (Windows)
http://msdn.microsof[...]
[35]
웹사이트
チュートリアル: MFC プロジェクトへのアニメーションの追加
https://msdn.microso[...]
[36]
웹사이트
動的レイアウト
https://msdn.microso[...]
[37]
웹사이트
DLL の境界を越えて CRT オブジェクトを渡す場合に発生する可能性のあるエラー
https://msdn.microso[...]
[38]
웹사이트
MFC Macros and Globals
https://msdn.microso[...]
[39]
문서
クラス名は、名前に通例 ''C'' プレフィックスが付けられている。
[40]
웹사이트
Making Wrong Code Look Wrong - Joel on Software
http://www.joelonsof[...]
[41]
웹사이트
間違ったコードは間違って見えるようにする - The Joel on Software Translation Project
http://local.joelons[...]
[42]
웹사이트
Deep C++, 予約名 - MSDN
https://web.archive.[...]
[43]
웹사이트
マイクロソフト セキュリティ情報 MS07-012 - 重要
https://technet.micr[...]
[44]
웹사이트
Redistribution of the shared C runtime component in Visual C++
https://support.micr[...]
[45]
웹사이트
Visual C++ - 配置例 (MSDN)
http://msdn.microsof[...]
[46]
웹사이트
グローバルに提供される side-by-side アセンブリを適用しないアプリケーションは、マイクロソフトのソフトウェア更新プログラムで修正される問題に対して脆弱になる可能性がある
http://support.micro[...]
[47]
웹사이트
テクニカル ノート 33: MFC の DLL バージョン (MSDN)
http://msdn.microsof[...]
[48]
웹사이트
Unicode とマルチバイト文字セット (MBCS: Multibyte Character Set) のサポート
https://msdn.microso[...]
[49]
문서
CreateFileA()/CreateFileW() APIに対応するCreateFileマクロや、MBCS/Unicode文字列リテラルを切り替えるTEXT(), _T()マクロなど。
[50]
웹사이트
The sad history of Unicode printf-style format specifiers in Visual C++ - The Old New Thing
https://devblogs.mic[...]
[51]
웹사이트
実用が始まったUnicodeの現状と課題 | JAGAT
https://www.jagat.or[...]
[52]
웹사이트
Windows Store Apps, the Windows Runtime, and the C Run-Time
http://msdn.microsof[...]
[53]
웹인용
Visual Studio 2019 Release Notes
https://docs.microso[...]
Msdn.microsoft.com
2019-07-24
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com