Pregunta

Tengo una aplicación MFC que utiliza CMenu de la barra de menú principal.
No he sido capaz de crear submenús con éxito.

puedo tener el primer nivel de Archivo, Editar, Ver, etc y sus submenús, pero no puedo crear un submenú fuera de uno de los menús.

Por ejemplo, me gustaría poder ir a Archivo-> Artículos recientes -> lista de elementos de submenú
Puedo hacer esto con bastante facilidad con el editor de recursos en VS, pero esto tiene que ser hecho de forma dinámica.

Estoy utilizando la clase justo en CMenu? ¿Alguna sugerencia sobre qué probar?
No he encontrado ningún tutoriales decente. Incluso me apuntando hacia el más adecuado sería de gran ayuda.

¿Fue útil?

Solución

Utilice su editor de recursos para agregar un submenú que contiene un elemento marcador de posición. A continuación, puede agarrar mediante programación una referencia a este submenú, añadir elementos a la misma y eliminar el elemento marcador de posición:

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

Otros consejos

que tenía que hacer lo mismo hoy, estoy en VS2008 con el paquete de características (cosas nuevas IU), y estaba buscando en las muestras, y no hay muestra de cómo agregar elementos de menú de forma dinámica ( http://msdn.microsoft.com/en-us/library/bb983167.aspx )

Es necesario reemplazar el método CFrameWndEx :: OnShowPopupMenu.

Max.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top