Partager via


Conteneur de documents actifs

Un conteneur de documents actifs, tel que Classeur Microsoft Office ou Internet Explorer, vous permet d'utiliser plusieurs documents de différents types d'application dans un frame unique (au lieu de vous obliger à créer et à utiliser les frames d'application pour chaque type de document).

MFC prend intégralement en charge des conteneurs de documents actifs dans la classe d' COleDocObjectItem .Vous pouvez utiliser l'Assistant Application MFC pour créer un conteneur de documents actifs en activant la case à cocher d' Active document container dans la page de Compound Document Support de l'Assistant Application MFC.Pour plus d'informations, consultez Créer une application conteneur de documents actifs.

Pour plus d'informations sur les conteneurs de documents actifs, consultez :

Spécifications de conteneur

La prise en charge des documents actifs dans un conteneur de documents actifs implique plus que des implémentations d'interface : elle requiert également une connaissance d'utiliser les interfaces d'un objet contenu.Le même s'applique aux extensions du document actif, où le conteneur doit également savoir comment utiliser ces interfaces d'extension sur les documents actifs eux-mêmes.

Un conteneur de documents actifs qui intègre les documents actifs doit :

  • Soyez à même de stockage d'objet de gestion via l'interface d' IPersistStorage , c. autrement dit., elle doit fournir une instance d' IStorage à chaque document actif.

  • Prise en charge des fonctionnalités de base d'incorporation de documents OLE, où la nécessité des objets de « site » (un par document ou incorporer) ces implémentez IOleClientSite et IAdviseSink.

  • Activation sur place de prise en charge des objets incorporés ou les documents actifs.Les objets du site du conteneur doivent implémenter IOleInPlaceSite et l'objet frame du conteneur doit fournir IOleInPlaceFrame.

  • Prenez en charge les extensions des documents actifs en implémentant IOleDocumentSite pour fournir un mécanisme pour que le conteneur parle au document.Éventuellement, le conteneur peut implémenter des interfaces IOleCommandTarget et IContinueCallback de document actif pour prendre des commandes simples telles que l'impression ou l'enregistrement.

L'objet frame, les objets de vue, et l'objet conteneur peuvent éventuellement implémenter IOleCommandTarget pour prendre en charge l'expédition de certaines commandes, comme indiqué dans cibles de la commande.L'affichage et les objets conteneur peuvent aussi éventuellement implémenter IPrint et IContinueCallback, pour prendre en charge l'impression de programmation, comme indiqué dans Impression par programmation.

L'illustration suivante montre les relations conceptuelles entre un conteneur et ses composants (à la gauche), et le document actif et ses vues (à droite).Le document actif gère le stockage et les données, et la vue s'affiche ou éventuellement les copies les données.Les interfaces en gras sont celles requises pour la participation de document actif ; ces gras et italique sont facultatifs.Toutes les autres interfaces sont requises.

Interfaces actives de conteneurs de documents

Un document qui prend en charge une seule vue peut implémenter les composants de vue et de document (autrement dit, leurs interfaces correspondantes) sur une classe concrète unique.En outre, un site de conteneur qui prend en charge une seule vue à la fois peut combiner le site de document et le site de vue dans une classe concrète unique de site.L'objet frame du conteneur, toutefois, doit rester distinct, et le composant du document de conteneur est simplement inclus ici pour donner une image complète de l'architecture ; il n'est pas affectée par l'architecture de relation contenant-contenu de document actif.

Objets de site de document

Dans l'architecture de relation contenant-contenu de document actif, un site de document est le même qu'un objet site client dans OLE de documents avec l'ajout de l'interface d' IOleDocument :

interface IOleDocumentSite : IUnknown

{

HRESULT ActivateMe(IOleDocumentView *pViewToActivate);

}

Le site de document est conceptuellement le conteneur pour un ou plusieurs objets « de site de vue ».Chaque objet site de vue est associé à plusieurs objets de vue du document géré par le site de document.Si le conteneur prend en charge une seule vue unique par site de document, il peut implémenter le site de document et le site de vue avec une classe concrète unique.

Objets de site de vue

l'objet de site de la vue d'un conteneur gère l'espace d'affichage pour une vue particulière d'un document.En plus de prendre en charge l'interface standard d' IOleInPlaceSite , un site de vue implémente également souvent IContinueCallback pour le paramètre général de présentation de programmation.(Notez que l'objet de vue ne demande jamais pour IContinueCallback ce qui peut être implémentée en réalité sur tout objet que le conteneur souhaits.)

Un conteneur qui prend en charge plusieurs affichages doit être en mesure de créer plusieurs objets de site de vue dans le site de document.Cela permet à chaque vue des services distincts d'activation et de désactivation de la manière attendue via IOleInPlaceSite.

Objet frame

L'objet frame du conteneur est, pour la plupart, le même frame utilisé pour l'activation sur place dans OLE de documents, c. autrement dit., celle qui gère la négociation de menu et de la barre d'outils.Un objet de vue a accès à cet objet frame via IOleInPlaceSite::GetWindowContext, qui permet également d'accéder à l'objet conteneur qui représente le document conteneur (qui peut gérer la négociation de barre d'outils de volet-niveau et l'énumération contenue d'objet).

Un conteneur de documents actifs peut augmenter le frame en ajoutant IOleCommandTarget.Cela lui permet d'accepter les commandes qui proviennent de l'interface utilisateur du document actif de la même façon que cette interface permet à un conteneur pour envoyer les mêmes commandes (telles que File New, Ouvrir, Enregistrer sous, Imprimer; Edit Copy, Coller, Undo, etc.) à un document actif.Pour plus d'informations, consultez cibles de la commande.

Voir aussi

Concepts

Relation contenant-contenu de Document actif