Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: nolasco281 en 10 Abril 2014, 21:10 pm



Título: Error con menu (solucionado)
Publicado por: nolasco281 en 10 Abril 2014, 21:10 pm
Hola como estan.

Mi siquente consulta es, estaba tratando de hacer un menu pero me muestra el siquiente error.

Código
  1. [Error] cast from 'HMENU' to 'UINT {aka unsigned int}' loses precision [-fpermissive]

Y esta es la funcion.
Código
  1. void InsertarMenu(HWND hwnd)
  2. {
  3. HMENU hMenu1, hMenu2; //HMENU un manipulador especial para menus
  4. hMenu1 = CreateMenu(); //Manipulador de la barra de menus
  5. hMenu2 = CreateMenu(); //Manipulador para el primer menu pop-up
  6.  
  7. AppendMenu(hMenu2, MF_STRING, CM_PRUEBA, "&Prueba"); //1 item tipo texto
  8. AppendMenu(hMenu2, MF_SEPARATOR, 0, NULL); //2 item(separador)
  9. AppendMenu(hMenu2, MF_STRING, CM_SALIR, "&Salir"); //3 item
  10.  
  11. //Insercion del menu pop-up
  12. AppendMenu(hMenu1, MF_STRING | MF_POPUP, (UINT)hMenu2, "&Principal");  //item tipo texto y menu pop-up
  13. SetMenu(hwnd, hMenu1); //Asigna el menu a la ventana hWnd
  14. }

Gracias.



Hola me respondo a mi mismo.

la solucion es en la siquente linea:

Código
  1. AppendMenu(hMenu1, MF_STRING | MF_POPUP, (UINT_PTR)hMenu2, "&Principal");

UINT_PTR es un tipo entero suficientemente grande para contener todos los valores del puntero, por lo tanto, las advertencias se va.

Encambio la razon de este error es la siquiente.

En esta Instruccion no tiene el mismo tama~no. está tratando de apuntar a algo, pero de distinto tama~no.
Código
  1. AppendMenu(hMenu1, MF_STRING | MF_POPUP, (UINT)hMenu2, "&Principal");

Saludos y gracias a los que pasaron.