Domanda

Ho un app che utilizza MFC CMenu per la barra del menu principale.
Non sono stato in grado di creare sottomenu con successo.

posso avere il primo livello di File, Modifica, Visualizza, ecc e loro menu secondari, ma non riesco a creare un sottomenu fuori di uno di questi menu.

Per esempio, vorrei essere in grado di andare File-> Elementi recenti -> elenco di elementi di sottomenu
Posso fare questo abbastanza facilmente con l'editor di risorse in VS, ma questo deve essere fatto in modo dinamico.

Sto utilizzando la classe proprio nel CMenu? Qualche suggerimento su cosa provare?
Non ho trovato alcun tutorial decente. Anche a me che punta verso quella giusta sarebbe utile.

È stato utile?

Soluzione

Usa il tuo editor di risorse per aggiungere un sottomenu che contiene un elemento segnaposto. È quindi possibile programatically afferrare un riferimento a questo sottomenu, aggiungere elementi ad esso e eliminare l'elemento segnaposto:

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

Altri suggerimenti

ho dovuto fare la stessa cosa oggi, sono in VS2008 con Feature Pack (roba nuova interfaccia utente), e guardavo i campioni, e non c'è esempio su come aggiungere voci di menu dinamicamente ( http://msdn.microsoft.com/en-us/library/bb983167.aspx )

È necessario eseguire l'override del metodo CFrameWndEx :: OnShowPopupMenu.

Max.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top