다음을 통해 공유


방법: Windows Forms 컨트롤에 명령 라우팅 추가

CWinFormsView는 명령과 업데이트 명령 UI 메시지를 사용자 정의 컨트롤에 라우팅하여 MFC 명령(예: 프레임 메뉴 항목 및 도구 모음 단추)을 처리할 수 있도록 합니다.

사용자 정의 컨트롤은 다음 예제에서와 같이 ICommandTarget::Initialize를 사용하여 명령 소스 개체에 대한 참조를 m_CmdSrc에 저장합니다. ICommandTarget을 사용하려면 mfcmifc80.dll에 대한 참조를 추가해야 합니다.

CWinFormsView는 여러 가지 공통 MFC 뷰 알림을 관리되는 사용자 정의 컨트롤에 전달하여 이를 처리합니다. 이러한 알림에는 IView InterfaceOnInitialUpdate, OnUpdateOnActivateView 메서드가 포함됩니다.

이 항목에서는 방법: 대화 상자에 사용자 정의 컨트롤 및 호스트 만들기방법: 사용자 정의 컨트롤 및 호스트 MDI 뷰 만들기를 이미 완료한 것으로 간주합니다.

MFC 호스트 응용 프로그램을 만들려면

  1. 방법: 대화 상자에 사용자 정의 컨트롤 및 호스트 만들기에서 만든 Windows Forms 컨트롤 라이브러리를 엽니다.

  2. 솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 참조 추가를 선택한 다음 Microsoft Visual Studio 10.0\VC\atlmfc\lib를 찾는 방법으로 mfcmifc80.dll에 대한 참조를 추가합니다.

  3. UserControl1.Designer.cs를 열고 다음과 같은 using 문을 추가합니다.

    using Microsoft.VisualC.MFC;
    
  4. 또한 UserControl1.Designer.cs에서 다음 줄을 변경합니다.

    partial class UserControl1
    

    위 줄을 다음과 같이 변경합니다.

    partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
    
  5. 다음 줄을 UserControl1 클래스 정의의 첫 번째 줄로 추가합니다.

    private ICommandSource m_CmdSrc;
    
  6. UserControl1에 다음 메서드 정의를 추가합니다. MFC 컨트롤의 ID는 다음 단계에서 만듭니다.

    public void Initialize (ICommandSource cmdSrc)
    {
       m_CmdSrc = cmdSrc;
       // need ID of control in MFC dialog and callback function 
       m_CmdSrc.AddCommandHandler(32771, new CommandHandler (singleMenuHandler));
    }
    
    private void singleMenuHandler (uint cmdUI)
    {
       // User command handler code
       System.Windows.Forms.MessageBox.Show("Custom menu option was clicked.");
    }
    
  7. 방법: 사용자 정의 컨트롤 및 호스트 MDI 뷰 만들기에서 만든 MFC 응용 프로그램을 엽니다.

  8. singleMenuHandler를 호출하는 메뉴 옵션을 추가합니다.

    리소스 뷰(Ctrl+Shift+E)로 이동하고 메뉴 폴더를 확장한 다음 IDR_MFC02TYPE을 두 번 클릭합니다. 그러면 메뉴 편집기가 표시됩니다.

    보기 메뉴의 맨 아래에 메뉴 옵션을 추가합니다. 속성 창에서 메뉴 옵션의 ID를 확인합니다. 파일을 저장합니다.

    솔루션 탐색기에서 Resource.h 파일을 열고 방금 추가한 메뉴 옵션의 ID 값을 복사한 다음, C# 프로젝트의 Initialize 메서드에서 m_CmdSrc.AddCommandHandler 호출의 첫 번째 매개 변수로 이 값을 붙여 넣습니다(필요한 경우 32771로 대체).

  9. 프로젝트를 빌드하고 실행합니다.

    빌드 메뉴에서 솔루션 빌드를 클릭합니다.

    디버그 메뉴에서 디버깅하지 않고 시작을 클릭합니다.

    추가한 메뉴 옵션을 선택합니다. .dll의 메서드가 호출됩니다.

참고 항목

참조

ICommandSource Interface

ICommandTarget Interface

CommandHandler Delegate

기타 리소스

Windows Forms 사용자 정의 컨트롤을 MFC 뷰로 호스팅