El codigo en si dice que no hay problemas que esta todo en orden pero cuando ejecuto el programa no me aparece el menu... ALGUNA IDEA???
MAIN.cpp
Código:
IDS.H#include <windows.h>
#include "ids.h"
*
*
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM); // Esto es una funcion
void InsertarMenu(HWND);
*
int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevinstance,
* * * * LPSTR lpszCmdParam, int nCmdShow) {
*
* * HWND ventana;//manipulador para la ventana principal de la aplicacion
* * MSG mensaje; // es una VARIABLE para manipular los mensajes que lleguen a nuestra aplicacion
* * WNDCLASSEX wincl; // declaramos la estructura wincl para registrar la clase particular de ventana a usar
* * HMENU hMenu;
*
*
*
*
*
* * wincl.hInstance = hThisInstance;
* * wincl.lpszClassName = "Mi_clase";
* * wincl.lpfnWndProc = WindowProcedure;
* * wincl.style = CS_DBLCLKS;
* * wincl.cbSize = sizeof(wincl);
* * //wincl.lpszMenuName = "MenuID";
*
* * //usar icono y puntero por defecto
*
* * wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
* * wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
* * wincl.hCursor = LoadIcon(NULL, IDC_ARROW);
* * wincl.lpszMenuName = NULL;
* * wincl.cbClsExtra = 0;
* * wincl.cbWndExtra = 0;
* * wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
*
* * //registrar la clase de hwnd si falla salir del programa
* * if(!RegisterClassEx(&wincl)) return 0;
*
* * ventana = CreateWindowEx(
* * * * * * 0,
* * * * * * "Mi_clase",
* * * * * * "Ejemplo 01",
* * * * * * WS_OVERLAPPEDWINDOW,
* * * * * * CW_USEDEFAULT,
* * * * * * CW_USEDEFAULT,
* * * * * * 544,
* * * * * * 375,
* * * * * * HWND_DESKTOP,
* * * * * * NULL,//LoadMenu(hThisInstance,"MenuID"),
* * * * * * hThisInstance,
* * * * * * NULL);
*
*
* * hMenu = LoadMenu(hThisInstance,"MenuID");
* * * * SetMenu(ventana,hMenu);
*
* * * * ShowWindow(ventana,nCmdShow);
* * //Bucle de mensajes
* * while(TRUE== GetMessage(&mensaje,NULL,0,0))
* * {
* * * * TranslateMessage(&mensaje);
*
* * * * DispatchMessage(&mensaje);
*
* * }
*
*
* * return mensaje.wParam;
}
*
*
*
LRESULT CALLBACK WindowProcedure(HWND ventana, UINT mensaje,WPARAM wParam,LPARAM lParam){
* * switch (mensaje)
* * {
* * case WM_COMMAND:
* * * * switch(LOWORD(wParam)){
* * * * case CM_PRUEBA:
* * * * * * * * * * MessageBox(ventana,"Comando: Prueba","Mensaje de Menu",MB_OK);break;
* * * * case CM_DIALOGO:
* * * * * * * * * * MessageBox(ventana,"Habia una rata llamada ratatouille que era francesa","Mensaje de Menu",MB_OK);break;
* * * * case CM_SALIR:
* * * * * * * * * * MessageBox(ventana,"Comando: Salir","Mensaje de Menu",MB_OK);break;
* * * * * * * * * * PostQuitMessage(0); break;
* * * * }
* * * * break;
* * case WM_DESTROY:
* * * * PostQuitMessage(0);break;
* * default:
* * * * return DefWindowProc(ventana,mensaje,wParam,lParam);
* * }
* * return 0;
}
*
Código:
FICHERO DE RECURSOS WIN002.rc* #define CM_PRUEBA 100 #define CM_SALIR 101 #define CM_PROBANDO 102 #define CM_DIALOGO 103 #define TEXTO 104 *
Código:
desde ya muy agradecido porque desde anteayer que estoy renegando con esto....#include <ids.h> * MenuID MENUEX BEGIN *POPUP "&Principal" *BEGIN * MENUITEM "", * CM_PRUEBA * MENUITEM "" // MFT_SEPARATOR * MENUITEM "&Dialogo", * CM_DIALOAGO * MENUITEM "" // MFT_SEPARATOR * MENUITEM "&Salir", CM_SALIR *END
Si Creo una funcion
Código:
* ....InsertarMenu(ventana); ShowWindow(ventana,SW_SHOWDEFAULT);...
Código:
me anda joya PERO quiero aprender a crear menus de la otra forma que es mas facil y aparte lo puedo separar en otro fichero*
void InsertarMenu(HWND ventana){
* * HMENU hmenu1, hmenu2;
* * hmenu1 = CreateMenu();// manipulador de la barra de menu
* * hmenu2 = CreateMenu();//Manipulador para el primer menu pop-up
* * AppendMenu(hmenu2,MF_STRING,CM_PRUEBA,"&Prueba"); //1` Item
* * AppendMenu(hmenu2,MF_SEPARATOR,0,NULL);//2` item como en el tercer espacio hay un 0. este separa
* * AppendMenu(hmenu2,MF_STRING,CM_DIALOGO,"&Dialogo");
* * AppendMenu(hmenu2,MF_SEPARATOR,0,NULL);
* * AppendMenu(hmenu2,MF_STRING,CM_SALIR,"&Salir"); //3` item
* * AppendMenu(hmenu1,MF_STRING | MF_POPUP, (UINT)hmenu2,"&Principal");
* * SetMenu(ventana,hmenu1); //asigna el menu a la ventana ventana
}
*
*
GRACIAS


