Cómo: Crear el control de usuario y hospedarlo en un cuadro de diálogo

Actualización: noviembre 2007

El procedimiento de este tema supone que está creando un nuevo proyecto MFC (CDialog Class) basado en cuadros de diálogo pero también puede agregar compatibilidad para un control de formularios Windows Form a un cuadro de diálogo MFC existente.

Para crear el control de usuario .NET

  1. Cree un nuevo proyecto de biblioteca de controles de Windows de Visual C# denominado WindowsControlLibrary1.

    En el menú Archivo, seleccione Nuevo y, a continuación, Proyecto. En la carpeta Visual C#, seleccione el icono de la Biblioteca de controles de Windows.

    Acepte el nombre del proyecto predeterminado de WindowsControlLibrary1 haciendo clic en Aceptar.

    El nombre predeterminado del control de .NET será UserControl1.

  2. Agregue los controles secundarios a UserControl1.

    En el Cuadro de herramientas, abra la lista Todos los formularios Windows Forms. Arrastre un control Button hacia la superficie de diseño de UserControl1.

    Agregue igualmente un control TextBox.

  3. Cambie las declaraciones de TextBox y Button de privado a público en el archivo UserControl1.Designer.cs.

  4. Genere el proyecto.

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

    Es posible que desee anotar la ruta de acceso completa con el nombre del archivo DLL generado en el registro de generación porque va a introducir esta información en la aplicación MFC.

Para crear la aplicación host MFC

  1. Cree un nuevo proyecto de aplicación MFC.

    En el menú Archivo, seleccione Nuevo y, a continuación, Proyecto. En la carpeta Visual C++, seleccione el icono de Aplicación MFC.

    En el cuadro Nombre, escriba MFC01. Cambie la configuración de la solución a Agregar a solución. Haga clic en Aceptar. Aparece el Asistente para aplicaciones MFC.

    En el Asistente para aplicaciones MFC, seleccione Tipo de aplicación. Elija Basada en cuadros de diálogo. Acepte la configuración predeterminada restante y haga clic en Finalizar. Esto creará una aplicación MFC con un cuadro de diálogo MFC.

  2. Agregue un control de marcador de posición al cuadro de diálogo MFC.

    Haga clic en la ficha Vista de recursos. En Vista de recursos, haga doble clic en IDD_MFC01_DIALOG. El recurso del cuadro de diálogo aparece en Editor de recursos.

    En el Cuadro de herramientas, abra la lista Editor de cuadros de diálogo. Arrastre un control Static Text hacia el recurso de cuadro de diálogo. El control Static Text actuará como un marcador de posición para el control de formularios Windows Forms de .NET. Cambie su tamaño aproximadamente al del tamaño del control de formularios Windows Forms.

    Cambie el ID del control Static Text a IDC_CTRL1 en la ventana Propiedades y cambie la propiedad TabStop a Verdadero.

  3. Configure el proyecto.

    En el Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) en el nodo del proyecto MFC01 y, a continuación, seleccione Propiedades del menú contextual. Aparecerá el cuadro de diálogo Páginas de propiedades.

    En el cuadro de diálogo Páginas de propiedades, en el control de árbol Propiedades de configuración, seleccione General, y luego en la sección Valores predeterminados del proyecto, establezca Compatibilidad con Common Language Runtime en Compatibilidad con Common Language Runtime (/clr). Haga clic en Aceptar.

  4. Agregue una referencia al control de .NET.

    En el Explorador de soluciones, haga clic con el botón secundario del mouse en el nodo del proyecto MFC01 y, a continuación, seleccione Referencias. En la Página de propiedades, haga clic en Agregar nueva referencia, seleccione WindowsControlLibrary1 (en la ficha Proyectos) y haga clic en Aceptar. Esto agrega una referencia en forma de una opción del compilador /FU para que se compile el programa; también copia WindowsControlLibrary1.dll en el directorio del proyecto MFC01 para que se ejecute el programa.

  5. En stdafx.h, busque esta línea:

    #endif // _AFX_NO_AFXCMN_SUPPORT 
    

    Agregue estas líneas sobre ella:

    #include <afxwinforms.h>   // MFC Windows Forms support
    
  6. Agregue el código para crear el control administrado.

    Primero, declare el control administrado. En MFC01Dlg.h, vaya a la declaración de la clase del cuadro de diálogo y agregue un miembro de datos para el control de usuario en el ámbito protegido del modo siguiente:

    class CMFC01Dlg : public CDialog
    {
       // ...
       // Data member for the .NET User Control:
       CWinFormsControl<WindowsControlLibrary1::UserControl1> m_ctrl1;
    

    Luego, proporcione una implementación para el control administrado. En MFC01Dlg.cpp, en el reemplazo del cuadro de diálogo de CMFC01Dlg::DoDataExchange generado por el asistente para aplicaciones MFC (y no CAboutDlg::DoDataExchange, que está en el mismo archivo), agregue el código siguiente para crear el control administrado y asociarlo con el marcador de posición estático IDC_CTRL1:

    void CMFC01Dlg::DoDataExchange(CDataExchange* pDX)
    {
       CDialog::DoDataExchange(pDX);
       DDX_ManagedControl(pDX, IDC_CTRL1, m_ctrl1);
    }
    
  7. Genere y ejecute el proyecto.

    En el Explorador de soluciones, haga clic con el botón secundario del mouse en MFC01 y seleccione Establecer como proyecto de inicio.

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

    En el menú Depurar, haga clic en Iniciar sin depurar. Ahora verá el cuadro de diálogo MFC que muestra el control de Windows Forms.

Vea también

Otros recursos

Hospedar un control de usuario de formularios Windows Forms en un cuadro de diálogo MFC