Partilhar via


Menus e recursos: mescla de menu

Este artigo detalha as etapas necessárias para que aplicativos de documentos OLE manipulem a edição visual e a ativação in loco corretamente. A ativação in loco representa um desafio para aplicativos de contêiner e servidor (componente). O usuário permanece na mesma janela de quadro (no contexto do documento de contêiner), mas está executando outro aplicativo (o servidor). Isso requer coordenação entre os recursos dos aplicativos de contêiner e de servidor.

Os tópicos abordados neste artigo incluem:

Layouts de menu

A primeira etapa é coordenar os layouts de menu. Os aplicativos de contêiner devem criar um menu a ser usado somente quando itens inseridos forem ativados no local. No mínimo, esse menu deve consistir no seguinte, na ordem listada:

  1. Menu Arquivo idêntico ao usado quando os arquivos estão abertos. (Normalmente, nenhum outro item de menu é colocado antes do próximo item.)

  2. Dois separadores consecutivos.

  3. Menu de janela idêntico ao usado quando arquivos estão abertos (somente se o aplicativo de contêiner for um aplicativo MDI). Alguns aplicativos podem ter outros menus, como um menu Opções, que pertencem a esse grupo, que permanece no menu quando um item inserido é ativado no local.

    Observação

    Pode haver outros menus que afetam a exibição do documento de contêiner, como o Zoom. Esses menus de contêiner aparecem entre os dois separadores neste recurso de menu.

Aplicativos de servidor (componente) também devem criar um menu especificamente para a ativação in loco. Ele deve ser como o menu usado quando os arquivos estão abertos, mas sem itens de menu, como Arquivo e Janela, que manipulam o documento do servidor em vez dos dados. Normalmente, esse menu consiste no seguinte:

  1. Menu Editar idêntico ao usado quando os arquivos estão abertos.

  2. Separador.

  3. Menus de edição de objetos, como o menu Caneta no aplicativo de exemplo Scribble.

  4. Separador.

  5. Menu Ajuda.

Para obter um exemplo, examine o layout de alguns menus in loco de exemplo de um contêiner e um servidor. Os detalhes de cada item de menu foram removidos para deixar o exemplo mais claro. O menu in loco do contêiner tem as seguintes entradas:

IDR_CONTAINERTYPE_CNTR_IP MENU PRELOAD DISCARDABLE
BEGIN
    POPUP "&File C1"
    MENUITEM SEPARATOR
    POPUP "&Zoom C2"
    MENUITEM SEPARATOR
    POPUP "&Options C3"
    POPUP "&Window C3"
END

Os separadores consecutivos indicam para onde a primeira parte do menu do servidor deve ir. Agora, examine o menu in loco do servidor:

IDR_SERVERTYPE_SRVR_IP MENU PRELOAD DISCARDABLE
BEGIN
    POPUP "&Edit S1"
    MENUITEM SEPARATOR
    POPUP "&Format S2"
    MENUITEM SEPARATOR
    POPUP "&Help S3"
END

Os separadores aqui indicam para onde o segundo grupo de itens de menu do contêiner deve ir. A estrutura de menu resultante quando um objeto desse servidor é ativado no local dentro deste contêiner tem esta aparência:

BEGIN
    POPUP "&File C1"
    POPUP "&Edit S1"
    POPUP "&Zoom C2"
    POPUP "&Format S2"
    POPUP "&Options C3
    POPUP "&Window C3"
    POPUP "&Help S3"
END

Como você pode ver, os separadores foram substituídos pelos diferentes grupos do menu de cada aplicativo.

As tabelas de acelerador associadas ao menu in loco também devem ser fornecidas pelo aplicativo do servidor. O contêiner os incorporará nas próprias tabelas de acelerador.

Quando um item inserido é ativado no local, a estrutura carrega o menu in loco. Em seguida, ela solicita ao aplicativo de servidor seu menu para ativação in loco e o insere onde estão os separadores. É assim que os menus combinam. Você obtém menus do contêiner para operar no posicionamento do arquivo e da janela e obtém menus do servidor para operar no item.

Barras de ferramentas e barras de status

Os aplicativos de servidor devem criar uma barra de ferramentas e armazenar seu bitmap em um arquivo separado. Os aplicativos gerados pelo assistente de aplicativo armazenam esse bitmap em um arquivo chamado ITOOLBAR.BMP. A nova barra de ferramentas substitui a barra de ferramentas do aplicativo de contêiner quando o item do servidor é ativado no local e deve conter os mesmos itens que a barra de ferramentas normal, mas remover ícones que representam itens nos menus Arquivo e Janela.

Essa barra de ferramentas é carregada na classe derivada de COleIPFrameWnd, criada para você pelo assistente de aplicativo. A barra de status é manipulada pelo aplicativo de contêiner. Para obter mais informações sobre a implementação de janelas de quadro in loco, consulte Servidores: implementando um servidor.

Confira também

Menus e recursos (OLE)
Ativação
Servidores
Contêineres