Contêineres: Recursos avançados

Este artigo descreve as etapas necessárias para incorporar recursos avançados opcionais em aplicativos existentes do contêiner.Esses recursos são:

  • Um aplicativo que é um contêiner e um servidor

  • Um vínculo OLE com um objeto incorporado

Criando um aplicativo de contêiner/servidor

Um aplicativo contêiner/servidor é um aplicativo que atua sistema autônomo um contêiner e um servidor.O Microsoft palavra para Windows é um exemplo disso.É possível incorporar documentos do palavra para Windows em outros aplicativos e você também pode incorporar itens em documentos do palavra para Windows.O processo para modificar seu aplicativo contêiner seja um recipiente e um servidor completo (você não pode criar um aplicativo de contêiner/miniserver combinação) é semelhante ao processo de criação de um servidor completo.

O artigo Servidores: Implementar um servidor lista um número de tarefas necessárias para implementar um aplicativo do servidor.Se você converter um aplicativo de contêiner para um aplicativo contêiner/servidor, em seguida, você precisa executar algumas dessas mesmas tarefas, adicionando código para o recipiente.A seguir lista os pontos importantes a considerar:

  • O código do contêiner criado pelo Assistente do aplicativo já inicializa o subsistema OLE.Você não precisará alterar ou adicionar nada para que o 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 em vigor enquanto o servidor propriamente dito está sendo usado para editar no local.

    Por exemplo, o MFC OLE amostra OCLIENT incorporou um item criado pelo seu aplicativo contêiner/servidor.Você em em aberto o aplicativo OCLIENT e in loco edição o item criado pelo seu aplicativo contêiner/servidor.Ao editar o item do seu aplicativo, você decidir que deseja incorporar um item criado pelo MFC OLE amostra HIERSVR.Para fazer isso, você não pode usar a ativação in-loco.Você deve em em aberto totalmente HIERSVR para ativar este item.Porque a biblioteca Microsoft Foundation classe não oferece suporte a esse recurso OLE, substituindo COleClientItem::CanActivate permite que você verificar essa situação e evitar um possível erro em time de execução em seu aplicativo.

Se você estiver criando um novo aplicativo e deseja que ele função sistema autônomo um aplicativo de contêiner/servidor, escolher essa opção na caixa de diálogo OLE opções do Assistente de aplicativo e esse suporte será criado automaticamente.Para obter mais informações, consulte o artigo Visão geral: Criando um contêiner ActiveX controle ActiveX.Para obter informações sobre exemplos do MFC, consulte MFC amostras.

Observe que você não pode inserir um aplicativo MDI nele mesmo.Um aplicativo que é um contêiner/servidor não pode ser inserido em si, a menos que seja um aplicativo SDI.

Links para objetos incorporados recurso permite que um usuário criar um documento com um vínculo OLE com um objeto incorporado no aplicativo contêiner.Por exemplo, criar um documento em um palavra processador que contém uma planilha incorporada.Se seu aplicativo suporta links para objetos incorporados, ele pode colar um vínculo para a planilha contida na palavra documento do processador.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

  1. Derivar a classe de documento de COleLinkingDoc em vez de COleDocument.

  2. Criar uma ID de classe OLE (CLSID) para o seu aplicativo usando o gerador de ID de classe incluído nas ferramentas de desenvolvimento OLE.

  3. Registre o aplicativo OLE.

  4. Criar um COleTemplateServer objeto sistema autônomo um membro de sua classe de aplicativo.

  5. No InitInstance membro funcionar, faça o seguinte:

    • Conectar-se o seu COleTemplateServer objeto para seus modelos de documentos, chamando o objeto ConnectTemplate função de membro.

    • telefonar the COleTemplateServer::RegisterAllfunção de membro registrar todos os objetos da classe com o sistema OLE.

    • De telefonarCOleTemplateServer::UpdateRegistry. O único parâmetro para UpdateRegistry deve ser OAT_CONTAINERSe o aplicativo não é iniciado com comutador "/ Embedded". Isso registra o aplicativo sistema autônomo um contêiner que pode oferecer suporte a links para objetos incorporados.

      Se o aplicativo é iniciado com comutador "/ Embedded", ele não deve mostrar a janela principal, semelhante a um aplicativo de servidor.

O MFC OLE amostra OCLIENT implementa este recurso.Para obter um exemplo de como isso é concluído, consulte o InitInstance função no arquivo OCLIENT.CPP deste aplicativo de exemplo.

Consulte também

Conceitos

Recipientes

Servidores