Pergunta

Eu tenho um aplicativo MFC que usa CMENU para a barra de menus principal.
Não consegui criar submenus com sucesso.

Eu posso ter o primeiro nível de arquivo, editar, ver, etc. e seus submenus, mas não posso criar um submenu fora de um desses menus.

Por exemplo, eu gostaria de poder ir ao arquivo-> itens recentes->Lista de itens no submenu
Eu posso fazer isso com bastante facilidade com o editor de recursos no VS, mas isso precisa ser feito dinamicamente.

Estou usando a classe certa em Cmenu? Alguma sugestão sobre o que tentar?
Não encontrei nenhum tutorial decente. Até me apontar para o certo seria útil.

Foi útil?

Solução

Use seu editor de recursos para adicionar um submenu contendo um item de espaço reservado. Em seguida, você pode pegar uma referência a este submenu, adicionar itens a ele e excluir o item de espaço reservado:

CMenu *subMenu = mainMenu.GetSubMenu( menuPosition );

if( subMenu )
{
    for( unsigned i = 0; i < stringArray.size(); i++ )
    {
        subMenu->AppendMenu( MF_STRING, 400 + i, stringArray[i]);
    }

    subMenu->DeleteMenu( ID_SUBMENU_PLACEHOLDER, MF_BYCOMMAND );
}

Outras dicas

Eu tive que fazer a mesma coisa hoje, estou no vs2008 com o pacote de recursos (novo material da interface do usuário) e estava olhando para as amostras, e há amostra sobre como adicionar itens de menu dinamicamente (http://msdn.microsoft.com/en-us/library/bb983167.aspx)

Você precisa substituir o método CFRAMEWNDEX :: ONSHOWPOPUPMENU.

Máx.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top