Cómo: Agregar enrutamientos de comandos al control de Windows Forms

Actualización: noviembre 2007

CWinFormsView enruta comandos y actualiza mensajes de interfaz de usuario de comandos al control del usuario para que pueda controlar los comandos MFC (por ejemplo, elementos de menú de marcos y botones de barra de herramientas).

El control del usuario utiliza ICommandTarget::Initialize para almacenar una referencia al objeto de origen de comando en m_CmdSrc, como se muestra en el ejemplo siguiente. Para utilizar ICommandTarget es necesario agregar una referencia a mfcmifc80.dll.

CWinFormsView controla algunas de las notificaciones de vistas de MFC habituales reenviándolas al control del usuario administrado. Estas notificaciones incluyen OnInitialUpdate, OnUpdate y los métodos OnActivateView de IView Interface.

Para crear la aplicación host MFC

  1. Abra la Biblioteca de controles de formularios Windows Forms creada en Cómo: Crear el control de usuario y hospedarlo en un cuadro de diálogo.

  2. Agregue una referencia a mfcmifc80.dll; para ello, puede hacer clic con el botón secundario del mouse en el nodo de proyecto en el Explorador de soluciones, seleccionar Agregar referencia y, a continuación, desplazarse a Microsoft Visual Studio 8\VC\atlmfc\lib.

  3. Abra UserControl1.Designer.cs y agregue la instrucción using siguiente:

    using namespace Microsoft::VisualC::MFC;
    
  4. Además, en UserControl1.Designer.cs, cambie esta línea:

    partial class UserControl1
    

    a:

    partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
    
  5. Agregue ésta como primera línea de la definición de clase para UserControl1:

    private ICommandSource m_CmdSrc;
    
  6. Agregue las definiciones de método siguientes a UserControl1 (crearemos el identificador del control MFC en el paso siguiente):

    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("Got FILE_NEW");
    }
    
  7. Abra la aplicación MFC creada en Cómo: Crear el control de usuario y hospedarlo en un cuadro de diálogo.

  8. Agregue una opción de menú que llamará a singleMenuHandler.

    Vaya a Vista de recursos (CTRL+MAYÚS+E), expanda la carpeta Menú y, a continuación, haga doble clic en IDR_MFC02TYPE. Se muestra el editor de menús.

    Agregue una opción de menú al final del menú Ver. Guarde el archivo.

    En el Explorador de soluciones, abra el archivo Resource.h, copie el valor de la opción de menú que acaba de agregar y pegue ese valor como primer parámetro de la llamada a m_CmdSrc.AddCommandHandler en el método Initialize del proyecto de C#.

  9. Genere y ejecute el proyecto.

    En el menú Generar, haga clic en Generar solución.

    En el menú Depurar, haga clic en Iniciar sin depurar.

    Seleccione la opción de menú que ha agregado. Observe que se llama al método en .dll.

Vea también

Referencia

ICommandSource Interface

ICommandTarget Interface

CommandHandler Delegate

Otros recursos

Hospedar un control de usuario de formularios Windows Forms como vista MFC