Recipientes: Recursos avançados
Este artigo descreve as etapas necessárias para incorporar recursos avançados opcionais aplicativos existentes do recipiente.Esses recursos são:
Um aplicativo é um contêiner e um servidor
Um vínculo OLE com um objeto incorporado
Criando um aplicativo de contêiner/servidor
Um aplicativo de contêiner/servidor é um aplicativo que atua como um contêiner e um servidor.Microsoft Word para Windows é um exemplo disso.Você pode incorporar documentos do Word para Windows em outros aplicativos, e você também pode incorporar itens em documentos do Word para Windows.O processo para modificar o aplicativo recipiente seja um contêiner e um servidor completo (não é possível criar um aplicativo de contêiner/miniserver combinação) é semelhante ao processo de criação de um servidor completo.
O artigo servidores: Implementando um servidor lista um número de tarefas necessárias para implementar um aplicativo de servidor.Se você converter um aplicativo de contêiner para um aplicativo de contêiner/servidor, em seguida, você precisa executar algumas dessas mesmas tarefas, adicionando código para o recipiente.A seguir lista as coisas importantes a considerar:
O código do contêiner criado pelo Assistente de aplicativo já inicializa o subsistema OLE.Você não precisará alterar ou adicionar algo para esse suporte.
Onde quer que a classe base de uma classe de documento é COleDocument, alterar a classe base para COleServerDoc.
Substituir COleClientItem::CanActivate para evitar a edição de itens no lugar enquanto o servidor está sendo usado para editar no local.
Por exemplo, o MFC OLE exemplo OCLIENT incorporou um item criado por seu aplicativo de contêiner/servidor.Abra o aplicativo OCLIENT e in loco editar o item criado pelo aplicativo de contêiner/servidor.Ao editar o item do seu aplicativo, você decidir que deseja incorporar um item criado pelo MFC OLE exemplo HIERSVR.Para fazer isso, você não pode usar a ativação in-loco.Você deve abrir totalmente HIERSVR para ativar este item.Porque a biblioteca Microsoft Foundation Class não oferece suporte a esse recurso OLE, substituindo COleClientItem::CanActivate permite que você verificar essa situação e evitar um possível erro de tempo de execução em seu aplicativo.
Se você estiver criando um novo aplicativo e deseja que ele funcione como um aplicativo de contêiner/servidor, escolha que opção na caixa de diálogo Opções OLE no Assistente de aplicativo e esse suporte será criada automaticamente.Para obter mais informações, consulte o artigo Visão geral: Criando um contêiner de controle de ActiveX.Para obter informações sobre exemplos do MFC, consulte exemplos do MFC.
Observe que você não pode inserir um aplicativo MDI em si.Um aplicativo é um contêiner/servidor não pode ser inserido em si, a menos que ele é um aplicativo SDI.
Links para objetos incorporados
Links para recurso incorporado objetos permite que um usuário criar um documento com um vínculo OLE com um objeto incorporado dentro de seu aplicativo de contêiner.Por exemplo, crie um documento em um processador de texto que contém uma planilha incorporada.Se seu aplicativo oferecer suporte a links para objetos incorporados, ele pode colar um link para a planilha contida no documento do processador de texto.Esse recurso permite que seu aplicativo para usar as informações contidas na planilha sem saber onde o processador de texto originalmente acertou.
Para vincular objetos incorporados em seu aplicativo
Derivar sua classe de documento do COleLinkingDoc em vez de COleDocument.
Criar uma identificação de classe OLE (CLSID) para seu aplicativo usando o gerador de ID de classe incluído com as ferramentas de desenvolvimento OLE.
Registre o aplicativo OLE.
Criar um COleTemplateServer o objeto como um membro de sua classe de aplicativo.
Em sua classe de aplicativo InitInstance membro funcionar, faça o seguinte:
Conectar seu COleTemplateServer objeto aos modelos documento chamando o objeto ConnectTemplate função de membro.
Chamar o COleTemplateServer::RegisterAll função de membro para registrar todos os objetos da classe com o sistema OLE.
Call COleTemplateServer::UpdateRegistry.O único parâmetro para UpdateRegistry deve ser OAT_CONTAINER se o aplicativo não é iniciado com switch "/ Embedded".Isso registra o aplicativo como um contêiner que pode oferecer suporte a links para objetos incorporados.
Se o aplicativo é iniciado com switch "/ Embedded", ele não deve mostrar a janela principal, semelhante a um aplicativo de servidor.
O MFC OLE exemplo OCLIENT implementa este recurso.Um exemplo de como isso é feito, consulte o InitInstance função do OCLIENT.Arquivo CPP deste aplicativo de amostra.