Partilhar via


Implementando a ativação In-Place

A ativação no local permite que um utilizador interaja com um objecto integrado sem sair do documento contentor. Quando um usuário ativa o objeto, uma barra de menus composta composta por elementos das barras de menus do aplicativo contêiner e do aplicativo servidor substitui a barra de menu principal do contêiner. Comandos e recursos de ambos os aplicativos estão, portanto, disponíveis para o usuário, incluindo ajuda sensível ao contexto para o objeto ativo. Quando um usuário começa a trabalhar com alguma parte não objeto do documento, o objeto é desativado, fazendo com que o menu original do documento contêiner substitua o menu composto.

Este recurso era originalmente conhecido como edição no lugar. O nome foi alterado porque a edição é apenas uma maneira de um usuário interagir com um objeto em execução. Os clipes de som, por exemplo, podem ser ouvidos em vez de editados. Os clipes de vídeo podem ser visualizados em vez de edição. A ativação no local é especialmente apropriada no caso de clipes de vídeo, porque permite que eles sejam executados no local, sem abrir uma janela separada. Isso poderia ser crítico se o vídeo fosse visualizado, digamos, em conjunto com dados de texto adjacentes no documento do contêiner.

A implementação da ativação no local é estritamente opcional para aplicações de contêiner e servidor. OLE ainda suporta o modelo no qual a ativação de um objeto faz com que o aplicativo de servidor abra uma janela separada. Os objetos vinculados sempre abrem em uma janela separada para enfatizar que residem em um documento separado.

A ativação in-loco começa com o objeto em resposta a uma chamada IOleObject::DoVerb do seu contêiner. Essa chamada geralmente acontece em resposta a um usuário clicando duas vezes no objeto ou selecionando um comando (verbo) no menu Editar do aplicativo contêiner.

A janela ativa recebe a entrada de teclado e mouse enquanto o objeto incorporado está ativo. Quando um usuário seleciona comandos na barra de menus composta, o comando e as mensagens de menu associadas são enviadas para o contêiner ou aplicativo de objeto, dependendo de qual é o proprietário do menu suspenso específico selecionado. A entrada por meio das réguas, barras de ferramentas ou adornos de moldura de um objeto vai diretamente para o objeto incorporado, que possui essas janelas.

Um objeto incorporado ativado no local permanece ativo até que o contêiner o desative em resposta à entrada do usuário ou o objeto desista voluntariamente do estado ativo, como um clipe de vídeo pode fazer, por exemplo. Um utilizador pode desativar um objeto clicando dentro do documento de conteúdo, mas fora da janela de ação local do objeto, ou simplesmente clicando noutro objeto. No entanto, um objeto ativado no local permanece ativo se o usuário clicar na barra de título, na barra de rolagem ou, em particular, na barra de menus do contêiner.

Você pode implementar um servidor de objetos de ativação no local como um servidor em processo (DLL) ou um servidor local (EXE). Em ambos os casos, a barra de menus composta contém itens (normalmente menus suspensos) de ambos os processos de servidor e do contentor. No caso de um servidor em execução, a janela de ativação local é simplesmente outra janela filha na hierarquia de janelas do container, recebendo a sua entrada através do ciclo de mensagens da aplicação container.

No caso de um servidor local, a janela de ativação in-situ pertence ao processo do aplicativo de servidor para o objeto incorporado, mas a sua janela pai pertence ao contêiner. A entrada para a janela de ativação in-place aparece na fila de mensagens do servidor e é despachada pelo loop de mensagens do servidor. As bibliotecas OLE são responsáveis por garantir que os comandos de menu e as mensagens sejam enviados corretamente.

Documentos compostos