Compartir a través de


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

En los pasos de este artículo se supone que está creando un proyecto de Microsoft Foundation Classes (MFC) basado en diálogos (CDialog Class), pero también puede agregar compatibilidad con un control de Windows Forms a un cuadro de diálogo MFC existente.

Para crear el control de usuario de .NET

  1. Cree un proyecto de biblioteca de controles de Windows Forms de Visual C# denominado WindowsFormsControlLibrary1.

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

    Para aceptar el nombre del proyecto WindowsFormsControlLibrary1, haga clic en Aceptar.

    De forma predeterminada, el nombre del control de .NET será UserControl1.

  2. Agregue controles secundarios a UserControl1.

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

    Agregue también un control TextBox.

  3. En Explorador de soluciones, haga doble clic en UserControl1.Designer.cs para abrirlo para su edición. Cambie las declaraciones de TextBox y Button de private a public.

  4. Compile el proyecto.

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

Para crear la aplicación host MFC

  1. Cree un proyecto de aplicación MFC.

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

    En el cuadro Nombre , escriba MFC01. Cambie la configuración solución a Agregar a la solución. Haga clic en OK.

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

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

    En el menú Ver, haga clic en Vista de recursos. En Vista de recursos, expanda la carpeta Cuadro de diálogo y haga doble clic en IDD_MFC01_DIALOG. El recurso de diálogo aparece en el Editor de recursos.

    En el Cuadro de herramientas, abra la lista Editor de cuadros de diálogo. Arrastre un control Texto estático al recurso del cuadro de diálogo. El control Texto estático servirá como marcador de posición para el control de Windows Forms en .NET. Cambie su tamaño a aproximadamente el tamaño del control de Windows Forms.

    En la ventana Propiedades, cambie el identificador del control Texto estático a IDC_CTRL1 y cambie la propiedad TabStop a True.

  3. Configure el proyecto para la compatibilidad con Common Language Runtime (CLR).

    En el Explorador de soluciones, haga clic con el botón derecho en el nodo del proyecto MFC01 y, después, haga clic en Propiedades.

    En el cuadro de diálogo Páginas de propiedades, en Propiedades de configuración, elija General. En la sección Valores predeterminados del proyecto, establezca Compatibilidad con Common Language Runtime en Compatibilidad con Common Language Runtime (/clr).

    En Propiedades de configuración, expanda C/C++ y seleccione el nodo General. Establezca Formato de información de depuración en Base de datos de programa (/Zi).

    Haga clic en el nodo Generación de código. Establezca Habilitar recompilación mínima en No (/Gm-). Establezca también Comprobaciones básicas en tiempo de ejecución en Predeterminado.

    Haga clic en Aceptar para aplicar los cambios.

  4. Agregue una referencia al control .NET.

    En el Explorador de soluciones, haga clic en el nodo de proyecto MFC01 y, después, haga clic en Agregar, Referencias. En la Página de propiedades, haga clic en Agregar nueva referencia, seleccione WindowsFormsControlLibrary1 (en la pestaña Proyectos) y haga clic en Aceptar. Esto agrega una referencia en forma de opción de compilador /FU para que el programa compile. También coloca una copia de WindowsFormsControlLibrary1.dll en la carpeta del proyecto \MFC01\ para que se ejecute el programa.

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

    #endif // _AFX_NO_AFXCMN_SUPPORT
    

    Encima, agregue estas líneas:

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

    En primer lugar, declare el control administrado. En MFC01Dlg.h, vaya a la declaración de la clase de diálogo y agregue un miembro de datos para el control de usuario en Ámbito protegido, como se indica a continuación.

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

    A continuación, proporcione una implementación para el control administrado. En MFC01Dlg.cpp, en la invalidación del cuadro de diálogo de CMFC01Dlg::DoDataExchange generado por el Asistente para aplicaciones MFC (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. Compile y ejecute el proyecto.

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

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

    En el menú Depurar, haga clic en Iniciar sin depurar. El cuadro de diálogo MFC debe mostrar el control Windows Forms.

Consulte también

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