ATL implementa ventanas contenidas con CContainedWindow. Una ventana contenida representa una ventana que delega sus mensajes a un objeto contenedor en lugar de manipulación en su propia clase.
&Notanbsp; No debe derivar una clase de CContainedWindow a fin de utilizar ventanas contenidas.
Con ventanas contenidas, puede o bien superclase una clase existente de Windows o una subclase de una ventana existente. Para crear una ventana que superclases un Windows existente clase, en primer lugar, especifique el nombre de clase existentes en el constructor del objeto CContainedWindow . A continuación, llame a CContainedWindow::Create. Subclase una ventana existente, no necesita especificar un nombre de clase de Windows (pase NULL al constructor). Simplemente llame al método CContainedWindow::SubclassWindow con el controlador a la ventana siendo subclase.
Se suele utilizan ventanas contenidas como miembros de datos de una clase de contenedor. El contenedor no tiene que ser una ventana; Sin embargo, debe derivar de CMessageMap.
Una ventana contenida puede utilizar mapas de mensajes alternativos para gestionar sus mensajes. Si tienes más de una ventana contenida, debe declarar que varios alternan mapas de mensajes, cada uno correspondiente a una ventana contenida independiente.
A continuación se presenta un ejemplo de una clase de contenedor con dos ventanas contenidas:
clase CMyContainer: CMessageMap pública,...
{
público:
nbsp; CContainedWindow m_wndEdit;
CContainedWindow m_wndList;
CMyContainer(): m_wndEdit ("Editar", esto es, 1), m_wndList ("Lista", este, 2).
{
}
...
BEGI&N_MSG_MAP(CMyContainer)
ALT_MSG_MAP(1)
/ / controladores para la ventana Editar ir aquí
ALT_MSG_MAP(2)
/ / controladores para la ventana Lista de ir aquí
END_MSG_MAP()
}
Para obtener más información sobre ventanas contenidas, consulte el ejemplo SUBEDIT . Para obtener más información acerca de crear superclases y subclases, consulte Crear superclases de procedimiento de ventana y Crear subclases de procedimiento de ventana en el SDK de Win32.