Compartir a través de


Contenedores de controles ActiveX: Utilizar Controles en un contenedor de no Diálogo

En algunas aplicaciones, como una aplicación SDI o MDI, deseará insertar un control en una ventana de la aplicación.La función miembro de Create de la clase contenedora, inline en Visual C++, puede crear una instancia del control dinámicamente, sin necesidad de un cuadro de diálogo.

La función miembro de Create tiene los parámetros siguientes:

  • lpszWindowName
    Un puntero al texto que se mostrará en el texto o la propiedad caption de control (si existe).

  • dwStyle
    Estilos de Windows.Para obtener una lista completa, vea CWnd::CreateControl.

  • rect
    Especifica el tamaño y la posición del control.

  • pParentWnd
    Especifica la ventana principal del control, normalmente CDialog.No debe ser NULL.

  • nID
    Especifica el identificador del control y se puede utilizar por el contenedor para hacer referencia al control.

Un ejemplo de cómo utilizar esta función para crear dinámicamente un control ActiveX estaría en una vista de formulario de una aplicación SDI.Puede crear una instancia del control en el controlador de WM_CREATE de la aplicación.

Para este ejemplo, CMyView es la clase principal de la vista, CCirc es la clase contenedora, y CIRC.H es el encabezado (. H) archivo de clase contenedora.

Implementar esta característica es un proceso de cuatro-paso.

  1. Inserte CIRC.H en CMYVIEW.H, justo antes de la definición de clase de CMyView :

    #include "circ.h"
    
  2. Agregue una variable miembro (de CCircescribe) en la sección protected de la definición de clase de CMyView ubicada en CMYVIEW.H:

    class CMyView : public CView
    {
    
    
    ...
    
    
    protected:
       CCirc m_myCtl;
    public:
       afx_msg void OnViewCircdlg();
    };
    
  3. Agregue un controlador de mensajes de WM_CREATE a la clase CMyView.

  4. En la función de controlador, CMyView::OnCreate, realiza una llamada a la función de Create de control mediante un puntero de this como ventana principal:

    int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
       if (CView::OnCreate(lpCreateStruct) == -1)
          return -1;
    
       m_myCtl.Create(NULL, WS_VISIBLE, CRect(50,50,100,100), this, 0);
       m_myCtl.SetCaption(_T("Control created"));
    
       return 0;
    }
    
  5. Recompile el proyecto.Un control de Circ se creará dinámicamente cada vez que se crea la vista de la aplicación.

Vea también

Conceptos

Contenedores de controles ActiveX