Compartilhar via


Ajudar a mesclagem de menus

Quando um objeto estiver ativo em um contêiner, o menu de mesclagem de protocolo do OLE documentos oferece o controle completo do objeto do Ajuda menu.sistema autônomo resultado, sistema autônomo tópicos da Ajuda do contêiner não estão disponível a menos que o usuário desativa o objeto.As regras para menu local mesclagem para permitir que o contêiner e um documento ativo está ativo no menu compartilhar expande a arquitetura de contenção do documento ativo.As regras novas são simplesmente adicionais convenções sobre qual componente possui que parte do menu e como o menu compartilhado foi criado.

A nova convenção é simples.Em documentos do ativo, a Ajuda menu h sistema autônomo dois itens de menu de nível superior organizados sistema autônomo segue:

Help

Container Help >

Object Help >

Por exemplo, quando uma seção do palavra é ativo no Office Binder, em seguida, a Ajuda menu apareceria sistema autônomo segue:

Help

Binder Help >

Word Help >

Ambos os itens de menu são menus em cascata sob a qual quaisquer itens de menu adicional específicos para o contêiner e objeto são fornecidos para o usuário.Quais itens são exibidos aqui variará com o contêiner e os objetos envolvidos.

Para construir este mescladas Ajuda menu, a arquitetura de contenção do documento ativo modifica o procedimento normal de documentos OLE.De acordo com a OLE documentos, o mescladas menu BAR pode ter seis grupos de menu s, ou seja, Arquivo, edição, contêiner, Object, Janela, Ajuda, nessa ordem.Em cada agrupar pode ser zero ou mais menus.Os grupos de Arquivo, Recipiente, and Janela pertencem ao contêiner e os grupos edição, O objeto, and Ajuda pertencer ao objeto.Quando o objeto quer fazer menu mesclagem, ele cria um espaço em branco menu BAR e o passa para o contêiner.O contêiner, em seguida, insere seus menus, chamando IOleInPlaceFrame::InsertMenus.O objeto também passa uma estrutura que é uma matriz de seis valores LONG (OLEMENUGROUPWIDTHS).Depois de inserir os menus, o contêiner marca menus quantas ele adicionado em cada um dos seus grupos e, em seguida, retorna.O objeto insere seus menus, prestando atenção à contagem de menus em cada agrupar do contêiner.Finalmente, o objeto passa o mescladas BAR de menus e a matriz (que contém a contagem de menus em cada agrupar) para OLE, que retorna um opaco "descritor de menu" manipular.Mais tarde o objeto passa esse identificador e o mescladas BAR de menus ao contêiner, por meio de IOleInPlaceFrame::SetMenu.Neste momento, o contêiner exibe a BAR de menus mescladas e também passa a alça para OLE, para que OLE possa fazer despachando adequada das mensagens de menu.

No procedimento modificado documento ativo, o objeto deve inicializar primeiro a OLEMENUGROUPWIDTHS elementos como zero antes de transmiti-lo ao contêiner.Em seguida, o contêiner executa um inserção menu normal com uma exceção: O contêiner insere um Ajuda menu sistema autônomo o último item e armazena o valor 1 na última entrada do (sexta)OLEMENUGROUPWIDTHS matriz (ou seja, largura [5], que pertence ao agrupar de Ajuda do objeto).Este Ajuda menu terá somente um item que é um submenu, a "Ajuda do contêiner > "menu em cascata sistema autônomo descrito anteriormente.

O objeto, em seguida, executa seu código de inserção menu normal, exceto que, antes de inserir sua Ajuda menu, ele verifica a entrada sexta do OLEMENUGROUPWIDTHS matriz.Se o valor é 1 e o nome do último menu Ajuda (ou seqüência de caracteres localizadas apropriadas) e, em seguida, o objeto insere sua Ajuda submenu do menuAjuda menu.

O objeto, em seguida, define o elemento sexto de OLEMENUGROUPWIDTHS como zero e incrementa o quinto elemento em um.Isso permite OLE saber que o Ajuda menu pertence ao contêiner e as mensagens de menu correspondente ao menu (e seus submenus) devem ser roteados para o contêiner.Em seguida, é responsabilidade do contêiner para encaminhar WM_INITMENUPOPUP, WM_SELECT, WM_COMMANDe outras mensagens relacionadas ao menu pertencentes à parte do objeto do Ajuda menu.Isso é realizado usando WM_INITMENU Para desmarcar um sinalizar que informa o contêiner se o usuário navegou para o objeto Ajuda menu.O contêiner, em seguida, observa WM_MENUSELECT para entrada em ou sair de qualquer item sobre o Ajuda menu o contêiner não adicionou propriamente dito.Na entrada, significa que o usuário h sistema autônomo navegados para um menu objeto, assim, o contêiner define o sinalizar "no menu Ajuda do objeto" e usa o estado do sinalizar que para encaminhar qualquerWM_MENUSELECT, WM_INITMENUPOPUP, e WM_COMMANDmensagens de sistema autônomo mínimo, para a janela de objeto.(Na sair, o contêiner limpa o sinalizar e processa essas mesmas mensagens propriamente dito.) O contêiner deve usar a janela retornada da IOleInPlaceActiveObejct::GetWindowfunção de sistema autônomo destino para essas mensagens.

Se o objeto detectar um zero no elemento sexto de OLEMENUGROUPWIDTHS, continuará de acordo com às regras de documentos OLE normais.Este procedimento abordará recipientes participar Ajuda menu mesclando, bem sistema autônomo sistema autônomo que não.

Quando o objeto chama IOleInPlaceFrame::SetMenu, antes de exibir o mescladas BAR de menus, as verificações de contêiner se o Ajuda menu tem um submenu adicional, juntamente com o que inseriu o recipiente.Nesse caso, o contêiner deixa sua Ajuda menu no mescladas BAR de menus.Se o Ajuda menu não tem um submenu adicional, o contêiner removerá seus Ajuda menu na BAR de menu mesclado.Este procedimento abordará sistema autônomo objetos que participam de Ajuda menu mesclando, bem sistema autônomo sistema autônomo que não.

Finalmente, quando é time de desmontar o menu, o objeto remove o inserido Ajuda menu além removendo o Outros inserido menus.Quando o contêiner remove seus menus, ele removerá seus Ajuda menu juntamente com os menus que foi inserido.

Consulte também

Conceitos

Contêineres de documento ativo