Un retrato de la arquitectura documento/vista
Los documentos y vistas se emparejan en una aplicación MFC típica. Los datos se almacenan en el documento, pero la vista tiene acceso con privilegios a los datos. La separación del documento de la vista separa el almacenamiento y el mantenimiento de los datos de su presentación.
Obtener acceso a datos de documento desde la vista
La vista tiene acceso a los datos de su documento con la función GetDocument, que devuelve un puntero al documento o al convertir la clase de vista en C++ friend
de la clase de documento. A continuación, la vista usa su acceso a los datos para obtener los datos cuando está listo para dibujarlos o manipularlos de otro modo.
Por ejemplo, desde la función miembro OnDraw de la vista, la vista usa GetDocument
para obtener un puntero de documento. A continuación, usa ese puntero para acceder a un miembro de datos CString
en el documento. La vista pasa la cadena a la función TextOut
. Para ver el código de este ejemplo, vea Dibujo en una vista.
Entrada del usuario en la vista
La vista también puede interpretar un clic del mouse dentro de sí mismo como selección o edición de datos. Del mismo modo, podría interpretar las pulsaciones de tecla como entrada de datos o edición. Supongamos que el usuario escribe una cadena en una vista que administra el texto. La vista obtiene un puntero al documento y usa el puntero para pasar los nuevos datos al documento, que los almacena en alguna estructura de datos.
Actualizar varias vistas del mismo documento
En una aplicación con varias vistas del mismo documento , como una ventana divisora en un editor de texto, la vista pasa primero los nuevos datos al documento. A continuación, llama a la función miembro UpdateAllViews del documento, que indica a todas las vistas del documento que se actualicen a sí mismos, reflejando los nuevos datos. Esto sincroniza las vistas.