Crear una aplicación de contenedor de documentos activo
La forma más sencilla y recomendada de crear una aplicación contenedora de documentos activa es crear una aplicación contenedora MFC EXE mediante el Asistente para aplicaciones MFC y, a continuación, modificar la aplicación para admitir la contención de documentos activos.
Para crear una aplicación de contenedor de documentos activo
En el menú Archivo, haga clic en Proyectoen el submenú Nuevo.
En el panel izquierdo, haga clic en Tipo de proyecto de Visual C++.
Seleccione Aplicación MFC en el panel derecho.
Asigne al proyecto el nombre MyProj, haga clic en Aceptar.
Seleccione la página Compatibilidad con documentos compuestos.
Seleccione la opción Contenedor o Contenedor/Servidor completo.
Seleccione la casilla Contenedor de documentos activo.
Haga clic en Finalizar
Cuando el Asistente para aplicaciones MFC termine de generar la aplicación, abra los siguientes archivos con el Explorador de soluciones:
- MyProjview.cpp
En MyProjview.cpp, realice los cambios siguientes:
En
CMyProjView::OnPreparePrinting
, reemplace el contenido de la función con el código siguiente:if (!CView::OnPreparePrinting(pInfo)) return FALSE; if (!COleDocObjectItem::OnPreparePrinting(this, pInfo)) return FALSE; return TRUE;
OnPreparePrinting
proporciona soporte de impresión. Este código reemplaza aDoPreparePrinting
, que es la preparación de impresión predeterminada.La contención de documentos activos proporciona un esquema de impresión mejorado:
Primero puede llamar al documento activo a través de su interfaz
IPrint
e indicarle que se imprima solo. Esto es diferente de la contención OLE anterior, en la que el contenedor tenía que representar una imagen del elemento contenido en el objetoCDC
de la impresora.Si eso falla, indique al elemento contenido que se imprima a través de su interfaz
IOleCommandTarget
Si se produce un error, haga su propia representación del elemento.
Las funciones de miembro estáticas
COleDocObjectItem::OnPrint
yCOleDocObjectItem::OnPreparePrinting
, como se implementaron en el código anterior, controlan este esquema de impresión mejorado.Agregue cualquier implementación propia y cree la aplicación.