Compartir a través de


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