Foros del Web » Programación para mayores de 30 ;) » Programación General »

Mostrar resume ItemMenu

Estas en el tema de Mostrar resume ItemMenu en el foro de Programación General en Foros del Web. Holas; Tengo el siuiente código: Código: static HWND hEstado = GetDlgItem(hwndDlg,IDC_ESTADO); case WM_MENUSELECT:<---------------- Error if (lParam == (LONG)GetMenu(hwndDlg)) { if(LOWORD(wParam) == 0) SetWindowText(hEstado,"Menu 1"); if(LOWORD(wParam) ...
  #1 (permalink)  
Antiguo 07/08/2005, 22:12
 
Fecha de Ingreso: diciembre-2004
Ubicación: Iquique, Chile
Mensajes: 150
Antigüedad: 19 años, 4 meses
Puntos: 0
Sonrisa Mostrar resume ItemMenu

Holas;

Tengo el siuiente código:

Código:
static HWND hEstado = GetDlgItem(hwndDlg,IDC_ESTADO);

case WM_MENUSELECT:<---------------- Error
   if (lParam == (LONG)GetMenu(hwndDlg))
  {
    if(LOWORD(wParam) == 0)
       SetWindowText(hEstado,"Menu 1");
    if(LOWORD(wParam) == 1)
       SetWindowText(hEstado,"Menu 2");
   }
   return 0;
case WM_EXITMENULOOP:<---------------- Error
   SetWindowText(hEstado,"");
   return 0;
Este procedimiento lo tengo dentro un Cuadro de diálogo, e problema que al compilar me señala errores en los case. Quiero mostrar una descripción de los título del menú:

Código:
IDM_MENU_TAB MENUEX
BEGIN
    POPUP "&Archivo"<---------- "Menu 1"
    BEGIN
       MENUITEM "&Salir", IDM_SALIR
    END
    POPUP "Ver Tab"<---------- "Menu 2"
    BEGIN
       MENUITEM "Dialogo", IDM_TAB
     END
END
Los errores en el compilador son:

mainTab.cpp:141: error: jump to case label
|-------> case WM_MENUSELECT:
mainTab.cpp:150: error: jump to case label
|-------> case WM_EXITMENULOOP:

Al sacarlos compila bien de nuevo, necesito ayuda, o si pueden dar otra forma de realizarlo.

Nos vemos.
  #2 (permalink)  
Antiguo 08/08/2005, 00:19
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Si esta inicializacion de hEstado esta dentro del switch ahi esta el problema:

Código:
static HWND hEstado = GetDlgItem(hwndDlg, IDC_ESTADO);
Podes hacerla fuera totalmente o declarla fuera y si se necesita inicializarla, algo asi como esto:

Código:
//fuera del switch
static HWND hEstado = 0;
switch(uMsg)
{
  case WM_MENUSELECT:
  {
    hEstado = GetDlgItem(hwndDlg, IDC_ESTADO);
    //RESTO DEL CODIGO
  }
  return 0;
  case WM_EXITMENULOOP:
  {
    hEstado = GetDlgItem(hwndDlg, IDC_ESTADO);
    //RESTO DEL CODIGO
  }
  return 0;
}
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 08/08/2005, 16:48
 
Fecha de Ingreso: diciembre-2004
Ubicación: Iquique, Chile
Mensajes: 150
Antigüedad: 19 años, 4 meses
Puntos: 0
Holas;

Te agradesco tu atención, el problema continua pasando, el código es este:

Código:
static HWND hEstado = 0;
    //
    switch (msg)
    {
        case WM_INITDIALOG:
             ShowWindow(hLblDireccion,SW_HIDE);
             ShowWindow(hLblEmail,SW_HIDE);
      ....... etc;
        case WM_MENUSELECT: <--------- Línea 213
	      hEstado = GetDlgItem(hwndDlg,IDC_ESTADO);
             if (lParam == (LONG)GetMenu(hwndDlg))
             {
                if(LOWORD(wParam) == 0) 
                    SetWindowText(hEstado,"Menu 1");
                if(LOWORD(wParam) == 1)
                    SetWindowText(hEstado,"Menu 2");
             }
             return 0;
        case WM_EXITMENULOOP: <--------- Línea 223
hEstado = GetDlgItem(hwndDlg,IDC_ESTADO);
             SetWindowText(hEstado,"");
             return 0;
    }

    return 0;
}
No entiendo que pasa, no se si es diferente cuando creo una ventana que los diálogos que estoy usando, no se.....

mainTab.cpp:213: error: jump to case label

mainTab.cpp:223: error: jump to case label

Ta agradesco si continuas ayudando, ahora voy intentar por otro camino, el cual debo saber que es....

Nos vemos.

Última edición por nostromo_; 08/08/2005 a las 16:57
  #4 (permalink)  
Antiguo 08/08/2005, 17:51
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Es extraño, prueba a usar bloques de código { } y mira a ver que te dice. Todo lo demás parece correcto...
  #5 (permalink)  
Antiguo 08/08/2005, 22:34
 
Fecha de Ingreso: diciembre-2004
Ubicación: Iquique, Chile
Mensajes: 150
Antigüedad: 19 años, 4 meses
Puntos: 0
Holas;

Amigos, el problema lo resolví de la siguiente manera:

El compilador me daba error en 4 líneas, las que no coloque (no se en que estaba pensando), se refiere a la parte que inicializo el TabControl:

Código:
case WM_NOTIFY:
            LPNMHDR pnmhdr = (LPNMHDR)lParam;  <-------- Error
            if(pnmhdr->code == TCN_SELCHANGE && TabCtrl_GetCurSel(hTabs) == 0)
            {
Despues colocaba el código correspondiente al menú:

Código:
case WM_NOTIFY:
            LPNMHDR pnmhdr = (LPNMHDR)lParam;  <-------- Error
            if(pnmhdr->code == TCN_SELCHANGE && TabCtrl_GetCurSel(hTabs) == 0)
            {
... etc...
case WM_MENUSELECT:  <-------- Error
        hEstado = GetDlgItem(hwndDlg,IDC_ESTADO);
case WM_EXITMENULOOP:  <-------- Error
       hEstado = GetDlgItem(hwndDlg,IDC_ESTADO);
La solución, fue, si esta despues, que pasa si lo dispongo antes del WM_NOTIFY?????, gran pregunta (para un novato):

Código:
case WM_MENUSELECT:  <-------- Error
        hEstado = GetDlgItem(hwndDlg,IDC_ESTADO);
case WM_EXITMENULOOP:  <-------- Error
       hEstado = GetDlgItem(hwndDlg,IDC_ESTADO);
case WM_NOTIFY:
            LPNMHDR pnmhdr = (LPNMHDR)lParam;  <-------- Error
            if(pnmhdr->code == TCN_SELCHANGE && TabCtrl_GetCurSel(hTabs) == 0)
            {
... etc...
funciona sin problema, gracias por responder amigos.

Nos vemos.
  #6 (permalink)  
Antiguo 08/08/2005, 23:36
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Probablemente sea lo mismo, proba a sacar pnmhdr afuera del switch y ordenarlos como antes.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:42.