Partilhar via


Contentores: Funcionalidades Avançadas

Este artigo descreve as etapas necessárias para incorporar recursos avançados opcionais em aplicativos de contêiner existentes. Estas características são:

Criando um aplicativo de contêiner/servidor

Um aplicativo de contêiner/servidor é um aplicativo que atua como um contêiner e um servidor. O Microsoft Word para Windows é um exemplo disso. Pode incorporar documentos do Word para Windows noutras aplicações e também pode incorporar itens em documentos do Word para Windows. O processo para modificar seu aplicativo de contêiner para ser um contêiner e um servidor completo (você não pode criar um aplicativo de contêiner/miniserver combinado) é semelhante ao processo de criação de um servidor completo.

O artigo Servidores: Implementando um servidor lista uma série de tarefas necessárias para implementar um aplicativo de servidor. Se você converter um aplicativo contêiner em um aplicativo contêiner/servidor, precisará executar algumas dessas mesmas tarefas, adicionando código ao contêiner. A seguir estão listadas as coisas importantes a serem consideradas:

  • O código de contêiner criado pelo assistente de aplicativo já inicializa o subsistema OLE. Você não precisará alterar ou adicionar nada para esse suporte.

  • Onde quer que a classe base de uma classe de documento esteja COleDocument, altere a classe base para COleServerDoc.

  • Substituir COleClientItem::CanActivate para evitar a edição de itens no local enquanto o próprio servidor está sendo usado para editar no local.

    Por exemplo, o OCLIENT de exemplo OLE MFC incorporou um item criado pelo seu aplicativo de contêiner/servidor. Abra a aplicação OCLIENT e edite diretamente no aplicativo o item criado pelo seu aplicativo de contêiner/servidor. Ao editar o item do seu aplicativo, você decide que deseja incorporar um item criado pelo exemplo OLE MFC HIERSVR. Para fazer isto, não podes usar a ativação no local. Você deve abrir totalmente o HIERSVR para ativar este item. Como a Microsoft Foundation Class Library não oferece suporte a esse recurso OLE, a substituição COleClientItem::CanActivate permite que você verifique essa situação e evite um possível erro em tempo de execução em seu aplicativo.

Se você estiver criando um novo aplicativo e quiser que ele funcione como um aplicativo de contêiner/servidor, escolha essa opção na caixa de diálogo Opções OLE no assistente de aplicativo e esse suporte será criado automaticamente. Para obter mais informações, consulte o artigo Visão geral: Criando um contêiner de controle ActiveX. Para obter informações sobre exemplos de MFC, consulte Exemplos de MFC.

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

O recurso Links para objetos incorporados permite que um usuário crie um documento com um link OLE para um objeto incorporado dentro de seu aplicativo de contêiner. Por exemplo, crie um documento em um processador de texto contendo uma planilha incorporada. Se o seu aplicativo suportar links para objetos incorporados, ele pode colar um link para a planilha contida no documento do processador de texto. Esta funcionalidade permite que a sua aplicação utilize a informação contida na folha de cálculo sem saber onde o processador de texto a obteve originalmente.

  1. Derive sua classe de documento de COleLinkingDoc em vez de COleDocument.

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

  3. Registe a aplicação com OLE.

  4. Crie um COleTemplateServer objeto como um membro de sua classe de aplicativo.

  5. Na função de membro da classe do InitInstance aplicativo, faça o seguinte:

    • Conecte o seu objeto COleTemplateServer aos modelos de documentos chamando a função de membro do objeto ConnectTemplate.

    • Chame a COleTemplateServer::RegisterAll função de membro para registrar todos os objetos de classe com o sistema OLE.

    • Ligue para o COleTemplateServer::UpdateRegistry. O único parâmetro para UpdateRegistry deve ser OAT_CONTAINER se a aplicação não for iniciada com a opção "/Embedded". Isso registra o aplicativo como um contêiner que pode suportar links para objetos incorporados.

      Se o aplicativo for iniciado com a opção "/Embedded", ele não deve mostrar sua janela principal, semelhante a um aplicativo de servidor.

O exemplo OLE MFC OCLIENT implementa esse recurso. Para obter um exemplo de como isso é feito, consulte a função InitInstance no ficheiro OCLIENT.CPP deste aplicativo de exemplo.

Ver também

Contentores
Servidores