Question

J'ai une application MFC qui utilise CMenu pour la barre de menu principal.
Je n'ai pas été en mesure de créer des sous-menus avec succès.

Je peux avoir le premier niveau de Fichier, Edition, Affichage, etc. et leurs sous-menus, mais je ne peux pas créer un sous-menu hors d'un de ces menus.

Par exemple, je voudrais pouvoir aller Fichier-> Articles récents -> liste des éléments dans le sous-menu Je peux le faire assez facilement avec l'éditeur de ressources dans VS, mais cela doit être fait dynamiquement.

Suis-je utiliser la classe en plein CMenu? Toutes les suggestions sur ce qu'il faut essayer?
Je ne l'ai pas trouvé de tutoriels décent. Même me pointant vers la droite on serait utile.

Était-ce utile?

La solution

Utilisez votre éditeur de ressources pour ajouter un sous-menu contenant un élément d'espace réservé. Vous pouvez alors saisir une référence programatically à ce sous-menu, ajouter des éléments et supprimer l'élément de l'espace réservé:

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 );
}

Autres conseils

Je devais faire la même chose aujourd'hui, je suis sur VS2008 avec le Feature Pack (nouveau stuff UI), et regardait les échantillons, et il y a échantillon sur la façon d'ajouter des éléments de menu dynamiquement ( http://msdn.microsoft.com/en-us/library/bb983167.aspx )

Vous devez remplacer la méthode CFrameWndEx :: OnShowPopupMenu.

Max.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top