Menus e recursos (OLE)
Este grupo de artigos explica o uso de menus e recursos em aplicativos de documentos OLE do MFC.
A edição visual do OLE estabelece requisitos adicionais no menu e em outros recursos fornecidos por aplicativos de documento OLE porque há vários modos nos quais os aplicativos de contêiner e servidor (componente) podem ser iniciados e usados. Por exemplo, um aplicativo de servidor completo pode ser executado em qualquer um desses três modos:
Autônomo.
In-loco, para editar um item dentro do contexto de um contêiner.
Abrir, para editar um item fora do contexto de seu contêiner, geralmente em uma janela separada.
Isso requer três layouts de menu separados, um para cada modo possível do aplicativo. Tabelas de acelerador também são necessárias para cada novo modo. Um aplicativo de contêiner pode ou não dar suporte à ativação in-loco; em caso afirmativo, ele precisará de uma nova estrutura de menu e tabelas de acelerador associadas.
A ativação in-loco requer que os aplicativos de contêiner e o servidor negociem por espaço no menu, na barra de ferramentas e na barra de status. Todos os recursos precisam ser projetados tendo isso em mente. O artigo Menus e recursos: mesclagem de menus aborda detalhadamente este tópico.
Devido a esses problemas, os aplicativos de documento OLE criados com o assistente de aplicativo podem ter até quatro menus e recursos de tabela de acelerador separados. Eles são usados pelos seguintes motivos:
Nome do recurso | Uso |
---|---|
IDR_MAINFRAME | Usado em um aplicativo MDI se nenhum arquivo estiver aberto, ou em um aplicativo SDI, independentemente dos arquivos abertos. Esse é o menu padrão usado em aplicativos não OLE. |
IDR_<project>TYPE | Usado em um aplicativo MDI se os arquivos estiverem abertos. Usado quando um aplicativo está executando de forma autônoma. Esse é o menu padrão usado em aplicativos não OLE. |
IDR_<project>TYPE_SRVR_IP | Usado pelo servidor ou contêiner quando um objeto está aberto no local. |
IDR_<project>TYPE_SRVR_EMB | Usado por um aplicativo de servidor se um objeto for aberto sem usar a ativação in-loco. |
Cada um desses nomes de recurso representa um menu e, geralmente, uma tabela de acelerador. Um esquema semelhante deve ser usado em aplicativos MFC que não são criados com o assistente de aplicativo.
Os artigos a seguir discutem tópicos relacionados a contêineres, servidores e a mesclagem de menu necessária para implementar a ativação in-loco: