Recipientes de documento ativa
Um contêiner do documento ativo, como Microsoft Office Binder ou Internet Explorer permite que você trabalhe com vários documentos de diferentes tipos de aplicativos em um único quadro (em vez de forçar você a criar e usar vários quadros de aplicativo para cada tipo de documento).
MFC fornece suporte completo para recipientes do documento ativo na COleDocObjectItem classe.Você pode usar o Assistente de aplicativo do MFC para criar um contêiner do documento ativo selecionando a contêiner do documento ativo caixa de seleção de Suporte a documentos compostos página do Assistente de aplicativo do MFC.Para obter mais informações, consulte criar um aplicativo de contêiner do documento ativo.
Para obter mais informações sobre recipientes do documento ativo, consulte:
Requisitos de contêiner
Objetos de Site do documento
Exibir objetos de Site
Objeto Frame
Requisitos de contêiner
Suporte do documento ativo em um contêiner do documento ativo implica mais do que as implementações de interface: ele também requer conhecimento usando as interfaces de um objeto contido.O mesmo se aplica a extensões do documento ativo, onde o recipiente também deve saber como usar essas interfaces de extensão nos próprios documentos ativos.
Um contêiner do documento ativo que integra documentos ativos deve:
Ser capaz de manipular o armazenamento do objeto por meio de IPersistStorage interface, ou seja, ele deve fornecer um IStorage instância para cada documento ativo.
Suporte os recursos básicos de incorporação de documentos OLE, necessitando objetos "site" (um por documento ou incorporação) que implemente IOleClientSite e IAdviseSink.
Suporte a ativação in-loco de objetos incorporados ou documentos ativos.Objetos de site do contêiner devem implementar IOleInPlaceSite e o objeto do quadro do contêiner deve fornecer IOleInPlaceFrame.
Suporte a extensões os documentos ativos implementando IOleDocumentSite para fornecer o mecanismo para o recipiente falar com o documento.Opcionalmente, o contêiner pode implementar interfaces do documento ativo IOleCommandTarget e IContinueCallback para pegar simples comandos, como imprimir ou salvar.
O objeto de quadro, exibir objetos e o objeto de contêiner podem implementar IOleCommandTarget suporte despacho de certos comandos, conforme discutido em Comando destinos.Objetos de exibição e o contêiner podem também opcionalmente implemente IPrint e IContinueCallback, para oferecer suporte a impressão através de programação, conforme discutido em Programático impressão.
A figura a seguir mostra as relações conceituais entre um contêiner e seus componentes (à esquerda) e o documento ativo e seus modos de exibição (à direita).O documento ativo gerencia dados e armazenamento, e o modo de exibição exibe ou imprime opcionalmente dados.Interfaces em negrito são aqueles necessários para a participação do documento ativo; Esses negrito e itálico são opcionais.Todas as outras interfaces são necessárias.
Um documento que suporta apenas um modo de exibição pode implementar o modo de exibição e o documento componentes (isto é, suas interfaces correspondentes) em uma única classe concreta.Além disso, um site de contêiner que suporta apenas uma visualização por vez pode combinar site documento e o modo de exibição em uma classe concreta de site único.Objeto do quadro do contêiner, Entretanto, deve permanecer distinto e componente de documento do contêiner simplesmente está incluído aqui para dar uma imagem completa da arquitetura; não é afetado pela arquitetura de confinamento do documento ativo.
Objetos de Site do documento
Na arquitetura de confinamento do documento ativo, um site de documento é o mesmo que um objeto de site do cliente em documentos OLE com a adição da IOleDocument interface:
interface IOleDocumentSite : IUnknown
{
HRESULT ActivateMe(IOleDocumentView *pViewToActivate);
}
O site do documento conceitualmente é o recipiente para um ou mais objetos "site de modo de exibição".Cada objeto de exibição de site é associado a objetos de exibição individual do documento gerenciados pelo site do documento.Se o contêiner suporta apenas um único modo de exibição por site do documento, ele pode implementar o site do documento e o exibir com uma única classe concreta.
Exibir objetos de Site
Objeto de site de modo de exibição do contêiner gerencia o espaço de exibição para uma determinada exibição de um documento.Além de dar suporte ao padrão IOleInPlaceSite interface, um site de exibição também geralmente implementa IContinueCallback para controle de impressão através de programação.(Observe que o objeto de exibição consulta nunca IContinueCallback para que possa ser realmente implementado em qualquer objeto os desejos do contêiner.)
Um contêiner que ofereça suporte a vários modos de exibição deve ser capaz de criar a exibição de vários objetos de site dentro do site do documento.Isso fornece cada modo de exibição com serviços separados de ativação e desativação conforme fornecido por meio de IOleInPlaceSite.
Objeto Frame
Objeto do quadro do contêiner é, na maior parte, o mesmo quadro é usado para ativação in-loco em documentos OLE, ou seja, aquele que manipula negociação de menu e barra de ferramentas.Um objeto de exibição tem acesso a este objeto de quadro através de IOleInPlaceSite::GetWindowContext, que também fornece acesso ao objeto de contêiner que representa o documento recipiente (que pode manipular a barra de ferramentas do painel de nível negociação e enumeração de objeto contido).
Um contêiner do documento ativo pode aumentar o quadro adicionando IOleCommandTarget.Isso permite que ele receber comandos que se originam na interface do usuário do documento ativo da mesma maneira que esta interface pode permitir que um contêiner enviar os mesmos comandos (como Arquivo novo, Abrir, Salvar como, Print; Editar cópia, Colar, Desfazere outros) para um documento ativo.Para obter mais informações, consulte Comando destinos.