Windows Forms/MFC 프로그래밍의 차이점
MFC에서 Windows Form 사용자 정의 컨트롤을 사용하는 항목에서는 Windows Forms에 대한 MFC 지원에 대해 설명합니다. .NET Framework 또는 MFC 프로그래밍에 익숙하지 않은 경우 이 항목에서는 둘 사이의 프로그래밍 차이점에 대한 배경 정보를 제공합니다.
Windows Forms는 .NET Framework에서 Microsoft Windows 애플리케이션을 만들기 위한 것입니다. 이 프레임워크는 풍부한 Windows 기반 애플리케이션을 개발할 수 있는 최신 개체 지향 확장 가능한 클래스 집합을 제공합니다. Windows Forms를 사용하면 다양한 데이터 원본에 액세스하고 Windows Forms 컨트롤을 사용하여 데이터 표시 및 데이터 편집 기능을 제공할 수 있는 풍부한 클라이언트 애플리케이션을 만들 수 있습니다.
그러나 MFC에 익숙한 경우 Windows Forms에서 아직 명시적으로 지원되지 않는 특정 유형의 애플리케이션을 만드는 데 사용할 수 있습니다. Windows Forms 애플리케이션은 MFC 대화 응용 프로그램에 해당합니다. 그러나 OLE 문서 서버/컨테이너, ActiveX 문서, SDI(단일 문서 인터페이스), MDI(다중 문서 인터페이스) 및 여러 MTI(최상위 인터페이스)에 대한 문서/보기 지원과 같은 다른 MFC 애플리케이션 유형을 직접 지원하는 인프라는 제공하지 않습니다. 사용자 고유의 논리를 작성하여 이러한 애플리케이션을 만들 수 있습니다.
Windows Forms 애플리케이션에 대한 자세한 내용은 Windows Forms 소개를 참조하세요.
다음 MFC 보기 또는 문서 및 명령 라우팅 기능에는 Windows Forms에 해당하는 기능이 없습니다.
셸 통합
MFC는 문서를 마우스 오른쪽 단추로 클릭하고 열기, 편집 또는 인쇄와 같은 동사를 선택할 때 셸에서 사용하는 DDE(동적 데이터 교환) 명령 및 명령줄 인수를 처리합니다. Windows Forms에는 셸 통합이 없으며 셸 동사에 응답하지 않습니다.
문서 템플릿
MFC에서 문서 템플릿은 프레임 창(MDI, SDI 또는 MTI 모드)에 포함된 보기를 연 문서와 연결합니다. Windows Forms에는 문서 서식 파일과 동일하지 않습니다.
문서
MFC는 문서 파일 형식을 등록하고 셸에서 문서를 열 때 문서 형식을 처리합니다. Windows Forms에는 문서 지원이 없습니다.
문서 상태
MFC는 문서의 더티 상태를 유지 관리합니다. 따라서 애플리케이션을 닫거나 애플리케이션이 포함된 마지막 보기를 닫거나 Windows에서 종료하면 MFC에서 문서를 저장하라는 메시지가 표시됩니다. Windows Forms는 동등한 지원을 제공하지 않습니다.
명령
MFC에는 명령 개념이 있습니다. 메뉴 모음, 도구 모음 및 상황에 맞는 메뉴는 모두 같은 명령(예: 잘라내기 및 복사)을 호출할 수 있습니다. Windows Forms에서 명령은 특정 UI 요소(예: 메뉴 항목)에서 엄격하게 바인딩된 이벤트입니다. 따라서 모든 명령 이벤트를 명시적으로 연결해야 합니다. Windows Forms에서 단일 처리기를 사용하여 여러 이벤트를 처리할 수도 있습니다. 자세한 내용은 Windows Forms의 단일 이벤트 처리기에 여러 이벤트 연결을 참조 하세요.
명령 라우팅
MFC 명령 라우팅을 사용하면 현재 보기 또는 문서에서 명령을 처리할 수 있습니다. 동일한 명령이 다른 보기에 대해 서로 다른 의미를 갖는 경우가 많기 때문에(예: 복사는 그래픽 편집기에서와 텍스트 편집기에서 다르게 동작함) 현재 보기에서 명령을 처리해야 합니다. Windows Forms 메뉴와 도구 모음은 활성 뷰에 대한 내재된 이해가 없으므로 추가 내부 코드를 작성하지 않고는 MenuItem.Click 이벤트에 대한 각 보기 유형에 대해 다른 처리기를 사용할 수 없습니다.
명령 업데이트 메커니즘
MFC에는 명령 업데이트 메커니즘이 있습니다. 따라서 현재 보기 또는 문서는 UI 요소의 상태(예: 메뉴 항목 또는 도구 단추 사용 또는 사용 안 함, 확인된 상태)를 담당합니다. Windows Forms에는 명령 업데이트 메커니즘과 동일하지 않습니다.