Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve as etapas necessárias para incorporar recursos avançados opcionais em aplicativos de contêiner existentes. Esses recursos 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. Você pode inserir documentos do Word para Windows em outros aplicativos e também pode inserir 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/miniservador de combinação) é semelhante ao processo de criação de um servidor completo.
O artigo Servidores: A implementação de um servidor lista várias tarefas necessárias para implementar um aplicativo de servidor. Se você converter um aplicativo de contêiner em um aplicativo de contêiner/servidor, precisará executar algumas dessas mesmas tarefas, adicionando código ao contêiner. O seguinte lista 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 nem adicionar nada para esse suporte.
Onde quer que a classe base de uma classe de documento esteja
COleDocument
, altere a classe base paraCOleServerDoc
.Substitua
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 do MFC inseriu um item criado pelo aplicativo contêiner/servidor. Abra o aplicativo OCLIENT e edite o item criado pelo aplicativo contêiner/servidor. Ao editar o item do aplicativo, você decide que deseja inserir um item criado pelo HIERSVR de exemplo OLE do MFC. Para fazer isso, você não pode usar a ativação in-loco. Você deve abrir totalmente o HIERSVR para ativar este item. Como a Biblioteca de Classes do Microsoft Foundation não dá suporte a esse recurso OLE,
COleClientItem::CanActivate
substituir permite verificar essa situação e evitar 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.
Links para objetos inseridos
O recurso Links to Embedded Objects permite que um usuário crie um documento com um link OLE para um objeto inserido dentro de seu aplicativo de contêiner. Por exemplo, crie um documento em um processador de palavras que contenha uma planilha inserida. Se o aplicativo der suporte a links para objetos inseridos, ele poderá colar um link para a planilha contida no documento do processador de palavras. Esse recurso permite que seu aplicativo use as informações contidas na planilha sem saber onde o processador de palavras o obteve originalmente.
Para vincular a objetos inseridos em seu aplicativo
Derivar sua classe de documento em
COleLinkingDoc
vez deCOleDocument
.Crie uma ID de classe OLE (CLSID) para seu aplicativo usando o Gerador de ID de Classe incluído nas Ferramentas de Desenvolvimento OLE.
Registre o aplicativo com o OLE.
Crie um
COleTemplateServer
objeto como membro da classe de aplicativo.Na função de membro da classe de
InitInstance
aplicativo, faça o seguinte:Conecte seu
COleTemplateServer
objeto aos modelos de documento chamando a função de membro doConnectTemplate
objeto.Chame a
COleTemplateServer::RegisterAll
função membro para registrar todos os objetos de classe com o sistema OLE.Chamar
COleTemplateServer::UpdateRegistry
. O único parâmetro aUpdateRegistry
ser OAT_CONTAINER se o aplicativo não for iniciado com a opção "/Embedded". Isso registra o aplicativo como um contêiner que pode dar suporte a links para objetos inseridos.Se o aplicativo for iniciado com o comutador "/Embedded", ele não deverá mostrar sua janela principal, semelhante a um aplicativo de servidor.
O OCLIENT de exemplo OLE do MFC implementa esse recurso. Para obter um exemplo de como isso é feito, consulte a InitInstance
função no OCLIENT. Arquivo CPP deste aplicativo de exemplo.
Consulte também
Contêineres
Servidores