Relaciones entre objetos MFC
Para ayudar a poner el proceso de creación de documentos o vistas en perspectiva, considere la posibilidad de ejecutar un programa: un documento, la ventana de marco utilizada para contener la vista y la vista asociada al documento.
Un documento mantiene una lista de las vistas de ese documento y un puntero a la plantilla de documentos que creó el documento.
Una vista mantiene un puntero a su documento y es un elemento secundario de su ventana de marco primaria.
Una ventana de marco de documento mantiene un puntero a su vista activa actual.
Una plantilla de documento mantiene una lista de sus documentos abiertos.
La aplicación mantiene una lista de sus plantillas de documento.
Windows realiza un seguimiento de todas las ventanas abiertas para que pueda enviarles mensajes.
Estas relaciones se establecen durante la creación de documentos o vistas. En la tabla siguiente se muestra cómo los objetos de un programa en ejecución pueden acceder a otros objetos. Cualquier objeto puede obtener un puntero al objeto de aplicación llamando a la función global AfxGetApp.
Obtener acceso a otros objetos de la aplicación
Objeto from | Acceso a otros objetos |
---|---|
Documento | Use GetFirstViewPosition y GetNextView para acceder a la lista de vistas del documento. Llame a GetDocTemplate para obtener la plantilla de documento. |
Ver | Llame a GetDocument para obtener el documento. Llame a GetParentFrame para obtener la ventana de marco. |
Ventana de marco de documento | Llame a GetActiveView para obtener la vista actual. Llame a GetActiveDocument para obtener el documento asociado a la vista actual. |
Ventana de marco MDI | Llame a MDIGetActive para obtener el objeto CMDIChildWnd actualmente activo. |
Normalmente, una ventana de marco tiene una vista pero, a veces, como en las ventanas divisoras, la misma ventana de marco contiene varias vistas. La ventana de marco mantiene un puntero a la vista activa actualmente; el puntero se actualiza cada vez que se activa otra vista.
Nota:
Un puntero a la ventana de marco principal se almacena en la variable miembro m_pMainWnd del objeto de aplicación. Una llamada a OnFileNew
en la invalidación de la función miembro InitInstance
de CWinApp
permite establecer m_pMainWnd automáticamente. Si no llama a OnFileNew
, el usuario debe establecer por sí mismo el valor de la variable en InitInstance
. (Es posible que las aplicaciones del componente COM de SDI (servidor) no establezcan la variable si /Embedding está en la línea de comandos). Tenga en cuenta que m_pMainWnd ahora es miembro de la clase CWinThread
en lugar de CWinApp
.
Consulte también
Plantillas de documento y el proceso de creación de documentos y vistas
Creación de plantillas de documentos
Creación de documentos y vistas
Creación de nuevos documentos, ventanas y vistas