Cambiar los textos de una barra de titulo
Supongamos un programa multidioma y al iniciarlo queremos que cambie la barra de menu dependiendo del idioma que escoja el usuario.
Asi pues definimos el elemento menu y un array para pasarle el texto. Tenemos declarado como manejador principal de la ventana la variable hWndPrincipal. Es el manejador que usamos cuando creamos la ventana principal.
MENUITEMINFO infoMenu;
char menutxt[256];
Ahora seteamos la estructura del menu a nuestro gusto insertandole el texto deseado.
strcpy(menutxt, "Archivo");
infoMenu.fMask = (MIIM_TYPE);
infoMenu.dwTypeData = menutxt;
infoMenu.cch = strlen(menutxt);
infoMenu.fType = MFT_STRING;
infoMenu.cbSize = sizeof(MENUITEMINFO);
SetMenuItemInfo(GetMenu(hWndPrincipal), 0, TRUE, &infoMenu);
En este ejemplo he pasado directamente la palabra “Archivo” pero podria haberla declarado en la tabla de strings y cargarla con LoadString.
LoadString(hInst, ESP_MENU_FILE, Menu_File, MAX_LOADSTRING);
strcpy(menutxt, Menu_File);
Siendo hInst, la instancia de la aplicación, ESP_MENU_FILE, la entrada en la talba de strings y Menu_File una variable. Tambien indicar que el 0 indica la posición del elemento en la barra de menu.
Para los submenus el proceso es identico a cualquier elemento, ya que cada submenu es un elemento diferenciado de la aplicación
SendDlgItemMessage(hDlg, IDC_SUBMENU1, WM_SETTEXT, NULL, (LPARAM) "Nuevo");
Siendo hDlg el manejador de la ventana y IDC_SUBMENU1 el elemento submenu a tratar.
Programming Ape
October 19th, 2006 at 9:57
Para los submenús (que en este caso son realmente ítems del menú) también hay otra forma, pequeño padawan.
Se puede cargar una estructura MENUITEMINFO igual que como haces para un menú y a la hora de lanzar el “SetMenuItemInfo()” hacerlo del siguiente modo:
SetMenuItemInfo(GetMenu(hWndPrincipal), IDC_SUBMENU1, FALSE, &infoMenu);
¿Y has pensado en cuando te encuentras con un submenú desplegable, es decir, un ítem que tiene subítems?
SetMenuItemInfo(GetSubMenu(GetMenu(hWndPrincipal), 2), 4, TRUE, &infoMenu);
Que significaría algo así como seleccionar el submenú 4 (zero-based) del menú 2 (zero-based también).
luis martinez
November 27th, 2006 at 17:47
la informacion que tienes aqui es muy interesante mi nombre es luis y estoy estudiando ingenieria de sistema, ya tengo un año; y me parece muy buena tu informacion ya que me mandaron a investigar sobre esto y aui lo explicas muy bien