Création d'une application conteneur de documents actifs
La méthode la plus simple et la plus recommandée pour créer une application conteneur de documents actif consiste à créer une application conteneur EXE MFC à l’aide de l’Assistant Application MFC, puis à modifier l’application pour prendre en charge l’isolement actif du document.
Dans le menu Fichier , cliquez sur Projetà partir du sous-menu Nouveau .
Dans le volet gauche, cliquez sur Type de projet Visual C++ .
Sélectionnez Application MFC dans le volet droit.
Nommez le projet MyProj, cliquez sur OK.
Sélectionnez la page Prise en charge des documents composés.
Sélectionnez l’option Conteneur ou Conteneur/Serveur complet.
Sélectionnez la zone case activée conteneur de documents actif.
Cliquez sur Terminer.
Une fois l’Assistant Application MFC terminée la génération de l’application, ouvrez les fichiers suivants à l’aide de Explorateur de solutions :
- MyProjview.cpp
Dans MyProjview.cpp, apportez les modifications suivantes :
Dans
CMyProjView::OnPreparePrinting
, remplacez le contenu de la fonction par le code suivant :if (!CView::OnPreparePrinting(pInfo)) return FALSE; if (!COleDocObjectItem::OnPreparePrinting(this, pInfo)) return FALSE; return TRUE;
OnPreparePrinting
assure la prise en charge de l’impression. Ce code remplaceDoPreparePrinting
, qui est la préparation d’impression par défaut.L’endiguement des documents actifs fournit un schéma d’impression amélioré :
Vous pouvez d’abord appeler le document actif via son
IPrint
interface et lui indiquer d’imprimer lui-même. Cela est différent de l’endiguement OLE précédent, dans lequel le conteneur a dû restituer une image de l’élément contenu sur l’objet d’imprimanteCDC
.En cas d’échec, indiquez à l’élément contenu de s’imprimer par le biais de son
IOleCommandTarget
interfaceEn cas d’échec, effectuez votre propre rendu de l’élément.
Les fonctions membres statiques
COleDocObjectItem::OnPrint
etCOleDocObjectItem::OnPreparePrinting
, comme implémentées dans le code précédent, gèrent ce schéma d’impression amélioré.Ajoutez n’importe quelle implémentation de votre propre application et générez l’application.