다음을 통해 공유


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

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

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

CWinFormsView 는 관리되는 사용자 컨트롤에 전달하여 몇 가지 일반적인 MFC 보기 알림을 처리합니다. 이러한 알림에는 OnInitialUpdate, 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 메서드가 호출됩니다.

참고 항목

Windows Forms 사용자 정의 컨트롤을 MFC 뷰로 호스팅
ICommandSource 인터페이스
ICommandTarget 인터페이스