Contêineres de documento ativo
Um contêiner do documento ativo, sistema autônomo Microsoft Office Binder ou Internet Explorer, permite que você trabalhe com vários documentos diferentes tipos de aplicativos em uma única estrutura (em vez de forçá-lo a criar e usar várias estruturas de aplicativo para cada tipo de documento).
MFC dá suporte total para os recipientes do documento ativo no COleDocObjectItem classe. Você pode usar o Assistente de aplicativo MFC para criar um contêiner do documento ativo selecionando o Contêiner do documento ativo caixa de seleção a Compostos de suporte do documento página do Assistente de aplicativos MFC.Para obter mais informações, consulte Criando 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
Quadro de objeto
Requisitos de contêiner
Suporte do documento ativo em um contêiner do documento ativo implica mais do que apenas as implementações de interface: Ele também requer conhecimento do usando as interfaces de um objeto contido.O mesmo se aplica às extensões do documento ativo, onde o contêiner também deve saber como usar essas interfaces de extensão nos documentos ativos-se.
Um contêiner do documento ativo que integra documentos ativos deve:
Ser capaz de manipular o objeto de armazenamento por meio de IPersistStorage interface, ou seja, ele deverá fornecer um IStorage instância de cada documento ativo.
Suporte aos recursos básicos incorporação do documentos OLE, necessitando de objetos "site" (um por documento ou incorporando) que implementeIOleClientSite and IAdviseSink.
Suporte a ativação in-loco de objetos incorporados ou documentos ativo.Objetos de site do contêiner devem implementar IOleInPlaceSite e deve fornecer o objeto do quadro do contêiner IOleInPlaceFrame.
Oferecer suporte a extensões dos documentos ativo por meio da implementação de IOleDocumentSite para fornecer o mecanismo para o contêiner para se comunicar com o documento. Opcionalmente, o contêiner pode implementar o documento ativo interfaces IOleCommandTarget e IContinueCallback Para selecionar comandos simples, sistema autônomo imprimir ou salvar.
O objeto do quadro, sistema autônomo objetos de exibição e o objeto contêiner opcionalmente podem implementar IOleCommandTarget para suportar o despacho de certos comandos, conforme discutido em Destinos de comando.Modo de exibição e o contêiner objetos podem também opcionalmente implementar IPrint e IContinueCallback, para oferecer suporte à impressão através de programação, sistema autônomo discutido em Impressão através de programaçã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 os 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 oferece suporte a somente um modo de exibição pode implementar componentes do modo de exibição e de documento (ou seja, suas interfaces correspondentes) em uma única classe concreta.Além disso, um site de contêiner que oferece suporte apenas a um modo de exibição de cada vez pode agrupar o site do documento e o site do modo de exibição em uma classe concreta de site único.Objeto do quadro do contêiner, no entanto, deve permanecer distinto e componente de documento do contêiner simplesmente está incluída aqui para fornecer uma visão completa da arquitetura; não é afetado pela arquitetura de contenção do documento ativo.
Objetos de site do documento
Na arquitetura de contenção do documento ativo, um site do documento é a mesma sistema autônomo um objeto de site do cliente em documentos OLE com a adição do IOleDocument interface:
interface IOleDocumentSite : IUnknown
{
HRESULT ActivateMe(IOleDocumentView *pViewToActivate);
}
Conceitualmente, o site de documento é o contêiner para um ou mais objetos "modo de exibição de site".Cada objeto de site do modo de exibição está associado a objetos individuais do modo de exibição do documento gerenciado pelo site do documento.Se o contêiner suporta apenas um único modo de exibição por local do documento, ele poderá implementar o site do documento e o site de modo de exibição com uma única classe concreta.
Exibir objetos de site
Objeto de site do modo de exibição do contêiner gerencia o espaço de exibição para um determinado modo de exibição de um documento.Juntamente com suporte a padrão IOleInPlaceSite interface, também geralmente implementa um site de modo de exibição IContinueCallback para controle programático de impressão. (Observe que o objeto de exibição consulta nunca para IContinueCallback para que, na verdade, pode ser implementada em qualquer desejos contêiner de objeto.)
Um contêiner que ofereça suporte a vários modos de exibição deve poder criar modo de exibição de vários objetos de site no site do documento.Isso oferece a cada modo de exibição separada de ativação e desativação serviços conforme fornecido por meio de IOleInPlaceSite.
Quadro de objeto
Objeto do quadro do contêiner é, em sua maioria, o mesmo quadro que é usado para ativação in-loco em documentos OLE, ou seja, aquele que manipula a 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 portador (que pode manipular a negociação de barra de ferramentas de nível de painel 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 forma que esta interface pode permitir que um contêiner enviar sistema autônomo mesmos comandos (sistema autônomo, por exemplo, Arquivo novo, em aberto, Salvar sistema autônomo, Impressão; edição cópia, Colar, Desfazer e outros) para um documento ativo.Para obter mais informações, consulte Destinos de comando.