[C con Clase] Crear mas de un menu en tiempo de ejecucuion

Steven Davidson srd4121 en njit.edu
Vie Mar 18 06:25:56 CET 2011


Hola Humbert,

On 3/17/2011 10:11 PM, humbert a wrote:
> En el capitulo 5 se describe la manera de crear menus sin utilizar
> los recursos pero intente hacer una barra de menus con mas de una
> opcion( del tipo archivo, ver, editar, etc) y solo se visualiza el
> ultime elemento. Esta es la funcion para insertar el menu:
>
> Desearia ayuda para que esto funcione
>

El problema que estás teniendo es que invocas 'SetMenu()' dos veces. Sin 
embargo, esta función sirve para asignar un menú (completo) a la barra 
de menúes de la ventana indicada. Esto significa que estableciste el 
menú de 'hMenu1' como la barra de menú de tu ventana, pero 
posteriormente la reestableciste como 'hMenu3'. Por esta razón, aparece 
solamente el menú de "Second".

Lo que debes hacer es asignar los submenúes a un menú común, el cual es 
el único establecido. Por ejemplo,

HMENU hMenuPrincipal, hMenuSecond, hBarraMenu;

hBarraMenu = CreateMenu();      // Barra de Menú de la ventana
hMenuPrincipal = CreateMenu();  // Menú "Principal"
hMenuSecond = CreateMenu();     // Menú "Second"

// Agrega opciones al menú "Principal"
AppendMenu( hMenuPrincipal, ... );
...

// Agrega opciones al menú "Second"
AppendMenu( hMenuSecond, ... );
...

// Agrega estos dos sub-menúes a la barra de menú de la ventana
AppendMenu( hBarraMenu, MF_STRING | MF_POPUP, (UINT)hMenuSecond, 
TEXT("&Principal") );

AppendMenu( hBarraMenu, MF_STRING | MF_POPUP, (UINT)hMenuPrincipal, 
TEXT("&Second") );

// Establecemos 'hBarraMenu' como la barra de menú de la ventana
SetMenu( hwnd, hBarraMenu );


Espero haber aclarado la duda.

Steven





Más información sobre la lista de distribución Cconclase