CContainedWindow

p&lantilla lt; classTBase= CWindow, claseTWinTraits = &Gt CControlWinTraits;
clase CContainedWindowT: TBase pública

Parámetros

TBase

La clase base de la nueva clase. La clase base predeterminada es CWindow.

TWinTraits

Una clase de rasgos que define estilos de su ventana. El valor predeterminado es CControlWinTraits.

&Nota nbsp; CContainedWindow es una especialización de CContainedWindowT. Si desea cambiar la clase base o rasgos, utilice CContainedWindowT directamente.

CContainedWindow implementa una ventana dentro de otro objeto. Procedimiento de ventana de CContainedWindowutiliza un mapa de mensajes en el objeto que lo contiene para dirigir mensajes a los controladores apropiados. Cuando se construye un objeto CContainedWindow , especifique qué mapa de mensajes debe utilizarse.

CContainedWindow le permite crear una nueva ventana por crear superclases de una clase de ventana existente. El método Create primero registra una clase de ventana que se basa en una clase existente pero utiliza CContainedWindow::WindowProc. Crear , a continuación, crea una ventana basada en esta nueva clase de ventana. Cada instancia de CContainedWindow puede superclase de una clase de ventana diferentes.

CContainedWindow también admite la creación de subclases de ventana. El método SubclassWindow concede una ventana existente en el objeto CContainedWindow y cambia el procedimiento de ventana a CContainedWindow::WindowProc. Cada instancia de CContainedWindow puede subclase una ventana diferente.

&Notanbsp;  Para cualquier objeto dado de CContainedWindow , llame al crear o SubclassWindow. No debería invocar ambos métodos en el objeto mismo.

Cuando utilice la opción de Agregar control basado en el Asistente para objetos ATL, el Asistente para agregar automáticamente un miembro de datos CContainedWindow a la clase que implementa el control. En el siguiente ejemplo está tomado de la ejemplo SUBEDIT y muestra cómo se declara la ventana contenida

class CAtlEdit : ...
{
public:
   // Declare a contained window data member
   CContainedWindow m_EditCtrl;

   // Initialize the contained window:
   // 1. Pass "EDIT" to specify that the contained 
   //    window should be based on the standard 
   //    Windows Edit box
   // 2. Pass 'this' pointer to specify that CAtlEdit 
   //    contains the message map to be used for the 
   //    contained window's message processing
   // 3. Pass the identifier of the message map. '1'
   //    identifies the alternate message map declared
   //    with ALT_MSG_MAP(1)
   CAtlEdit() : m_EditCtrl(_T("EDIT"), this, 1)
   {
      m_bWindowOnly = TRUE;
   }

   // Declare the default message map, 
   // identified by '0'
   BEGIN_MSG_MAP(CAtlEdit)
      ...
      MESSAGE_HANDLER(WM_CREATE, OnCreate)
      ...
   // Declare an alternate message map,
   // identified by '1'
   ALT_MSG_MAP(1)
      MESSAGE_HANDLER(WM_CHAR, OnChar)
   END_MSG_MAP()

   // Define OnCreate handler
   // When the containing window receives a WM_CREATE
   // message, create the contained window by calling
   // CContainedWindow::Create
   LRESULT OnCreate(UINT uMsg, WPARAM wParam, 
                    LPARAM lParam, BOOL& bHandled)
   {
      ...
      m_EditCtrl.Create(m_hWnd, rc, _T("hello"), 
                        WS_CHILD | WS_VISIBLE | 
                        ES_MULTILINE | ES_AUTOVSCROLL);
      return 0;
   }

   ...
};
Para obtener más información acerca de Ver
Creación de controles Tutorial ATL
Uso de windows en ATL Clases de ventana ATL
Asistente para objetos ATL Crear un proyecto ATL
Windows Windows y temas posteriores en el SDK de la plataforma
Creación de subclases Crear subclases de procedimiento de ventana en el SDK de la plataforma
Crear superclases Crear superclases de procedimiento de ventana en el SDK de la plataforma

# include lt;atlwin.h>

Miembros de clase

Véase también

CWindow, CWindowImpl, CMessageMap, BEGIN_MSG_MAP, ALT_MSG_MAP

Index