Clases de ventana derivadas
Puede crear ventanas directamente desde CWnd
o derivar las nuevas clases de ventana desde CWnd
. De esta forma crearía normalmente sus propias ventanas personalizadas. Sin embargo, para crear la mayoría de las ventanas de un programa marco se utilizan en su lugar las clases de ventana marco derivadas de CWnd
, proporcionadas por MFC.
Clases de ventana de marco
CFrameWnd
Se utiliza para las ventanas marco SDI que enmarcan un documento único y su vista. La ventana marco es a la vez la ventana marco principal de la aplicación y la ventana marco del documento actual.
CMDIFrameWnd
Se utiliza como ventana marco principal para las aplicaciones MDI. La ventana marco principal es un contenedor para todas las ventanas de documento MDI y comparte la barra de menús con ellas. Una ventana marco MDI es una ventana de nivel superior que aparece en el escritorio.
CMDIChildWnd
Se utiliza para los documentos individuales abiertos en una ventana marco principal MDI. Una ventana marco secundaria MDI contenida en la ventana marco principal MDI enmarca cada uno de los documentos y sus vistas. Una ventana secundaria MDI tiene una apariencia muy similar a la de una ventana marco típica, pero se incluye dentro de una ventana marco MDI en lugar de ubicarse en el escritorio. Sin embargo, a la ventana secundaria MDI le falta una barra de menús propia. Debe compartir la barra de menús de la ventana del marco MDI que la contiene.
Para obtener más información, vea Ventanas marco.
Otras clases de ventana derivadas de CWnd
Además de las ventanas marco, se derivan de CWnd
otras categorías principales de ventanas:
Vistas:
Las vistas se crean mediante la claseCView
derivada deCWnd
(o una de sus clases derivadas). Una vista se adjunta a un documento y actúa como intermediario entre el documento y el usuario. Una vista es una ventana secundaria (no un elemento secundario MDI) que rellena normalmente el área cliente de una ventana marco SDI o de una ventana marco secundaria MDI (o la parte del área cliente no cubierta por una barra de herramientas o una barra de estado).Cuadros de diálogo:
Los cuadros de diálogo se crean mediante la claseCDialog
derivada deCWnd
.Formularios:
Las vistas de formulario basadas en recursos de plantilla de cuadro de diálogo se crean mediante las clasesCFormView
,CRecordView
oCDaoRecordView
.Controles:
Los controles como botones, cuadros de lista y cuadros combinados se crean con otras clases derivadas deCWnd
. Vea Temas acerca de controles.Barras de control:
Ventanas secundarias que contienen controles. Entre los ejemplos se incluyen las barras de herramientas y las barras de estado. Vea Barras de control.
Jerarquía de clases de ventana
Consulte el gráfico de jerarquía de MFC en la Referencia de MFC. Las vistas se explican en Arquitectura documento/vista. Los cuadros de diálogo se explican en Cuadros de diálogo.
Crear sus propios tipos de ventana para un propósito especial
Además de las clases de ventana proporcionadas por la biblioteca de clases, puede necesitar ventanas secundarias con un propósito especial. Para configurar este tipo de ventanas, cree su propia clase derivada de CWnd
y conviértala en una ventana secundaria de un marco o vista. Tenga en cuenta que el marco administra la extensión del área cliente de una ventana marco de documento. La mayor parte del área cliente se administra mediante una vista, pero otras ventanas, por ejemplo, las barras de control o sus propias ventanas personalizadas, pueden compartir el espacio con la vista. Puede ser necesario interactuar con los mecanismos de las clases CView
y CControlBar
para colocar las ventanas secundarias en el área cliente de una ventana marco.
En Crear ventanas se describe la creación de objetos de ventana y cómo estos administran las ventanas.