Looking for mfc Answers? Try Ask4KnowledgeBase
Looking for mfc Keywords? Try Ask4Keywords

mfcmfc 시작하기


비고

MFC ( Microsoft Foundation Classes )는 Win32 API를 중심으로 개체 지향 래퍼를 제공하는 라이브러리입니다. MFC는 C ++ 클래스로 "원시"Win32 API를 캡슐화함으로써 GUI 응용 프로그램을 만들고 리소스를 관리하는 것을 훨씬 쉽게 만듭니다.

MFC는 오랜 시간 동안 사용되어 왔습니다. 1992 년 Microsoft의 C / C ++ 컴파일러 버전 7에서 처음 소개되었습니다. 현재 C ++ 개발이 시작되고 있습니다. Visual Studio의 후속 버전은 크게 향상된 MFC 버전과 함께 제공됩니다. 그것은 여전히 ​​최신 버전의 Visual Studio 2015에 포함되어 있습니다. 그러나 그 유산의 뿌리는 유감스럽게도 꽤 잘 보입니다. 대부분이 C ++ 언어의 표준화 이전에 개발 되었기 때문에 MFC 클래스는 템플릿과 같은 최신 C ++ 기능을 완벽하게 활용하지 않으며 RTTI와 같은 다른 표준 C ++ 기능을 자체적으로 구현하고 많은 비표준 관용구를 사용합니다 . 이러한 사실 때문에 Microsoft 이외의 컴파일러로 MFC 응용 프로그램을 컴파일하는 것이 거의 불가능합니다. 반면에 MFC는 Visual Studio에 잘 통합되어있어 개발이 훨씬 쉬워졌습니다.

초기 개발 단계에서 라이브러리는 Application Framework Extensions (AFX로 약칭 함)로 알려져있었습니다. 나중에 마케팅 부서에서 MFC로 이름을 변경했지만 코드를 변경하기에는 너무 늦었습니다. 따라서 많은 코드가 여전히 "Mfc"대신 "Afx"를 참조합니다. 눈에 띄는 예제는 Visual Studio에서 자동으로 생성되는 미리 컴파일 된 표준 헤더 파일입니다.이 파일의 이름은 StdAfx.h 입니다.

2008 년 4 월 7 일에 Microsoft는 MFC 클래스에 대한 업데이트를 Visual Studio 2008 및 MFC 9에 대한 대역 외 업데이트로 발표했습니다.이 업데이트에는 Microsoft Office 2007의 리본과 유사한 리본을 포함한 새로운 사용자 인터페이스 구문이 포함되어 있습니다. 관련 UI 위젯, 완벽하게 사용자 정의 할 수있는 도구 모음, 임의의 측면 및 문서 탭에 자유롭게 플로팅하거나 도킹 할 수있는 Visual Studio 2005와 같은 도킹 패널 (docking pane) 새 기능이 새 클래스에서 제공되므로 이전 응용 프로그램은 계속 실행됩니다. 이 업데이트는 BCGSoft의 BCGControlBar Library Professional Edition 위에 구축되었으며 MFC Feature Pack 으로 선정되었습니다.

이제 MFC는 서로 다른 접근 방식을 가진 두 개의 라이브러리로 구성됩니다.

  • 클래식 MFC (Win32 API 용 래퍼).
  • MFC 기능 팩 (Win32 API 컨트롤 및 리본과 같은 새 자체 그리기 컨트롤의 혼합 된 집합).

참조 :

기본 MFC 프로그램

// Include the MFC header:
// (you do not need to and should not include the standard Windows headers, e.g. 
// Windows.h)
#include <AfxWin.h>               // MFC core and standard components
// The following header defines resource constants, such as dialog and control IDs:
#include "resource.h"

// The basic element of an MFC application is a class that inherits from CWinApp.
class CMyApp : public CWinApp
{
    // This gets called as the application gets initialized.
    virtual BOOL InitInstance()
    {
        // Initialize a CDialog object to show in a moment.
        CDialog dlg(IDD_DIALOG1);
        // Display the dialog box as a modal dialog box.
        dlg.DoModal();

        // Return FALSE from this method to exit the application.
        return FALSE;
    }
};

// The one and only application object.
CMyWinApp theApp;
 

개요:

IDD_DIALOG1은 Visual Studio에 내장 된 것과 같은 리소스 편집기에서 만든 프로젝트 리소스 파일에 정의 된 대화 상자의 ID 여야합니다. 일반적으로 리소스 파일의 확장명은 .rc입니다. 대화 상자의 동작을 사용자 지정하려면 CDialog에서 새 클래스를 파생시킬 수 있습니다.

모달 대화 상자는 자체 메시지 루프를 실행합니다. 전화 "dlg.DoModal ();" 대화 상자가 사용자에 의해 닫힐 때까지 리턴하지 않습니다.

InitInstance ()에서 TRUE를 반환하면 응용 프로그램의 메시지 루프가 시작됩니다. 더 복잡한 대화 상자 기반 앱을 사용하는 경우에 사용됩니다.