Programación General > C/C++

 c++ WINAPI

(1/1)

Garethsoul:
&PruebaBuenas estoy aprendiendo a crear ventanas en windows usando c++ y las APis de windows pero eh aqui el problema...
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: C++ ---#include <windows.h>#include "ids.h"  LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM); // Esto es una funcionvoid 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;}  
IDS.H

--- Código: C++ --- #define CM_PRUEBA 100#define CM_SALIR 101#define CM_PROBANDO 102#define CM_DIALOGO 103#define TEXTO 104  
FICHERO DE RECURSOS WIN002.rc

--- Código: C++ ---#include <ids.h> MenuID MENUEXBEGIN POPUP "&Principal" BEGIN  MENUITEM "",   CM_PRUEBA  MENUITEM "" // MFT_SEPARATOR  MENUITEM "&Dialogo",   CM_DIALOAGO  MENUITEM "" // MFT_SEPARATOR  MENUITEM "&Salir", CM_SALIR END 
desde ya muy agradecido porque desde anteayer que estoy renegando con esto....

Si Creo una funcion
 
--- Código: C++ --- ....InsertarMenu(ventana);ShowWindow(ventana,SW_SHOWDEFAULT);... 


--- Código: C++ --- 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}   
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

GRACIAS

Navegación

[0] Índice de Mensajes

Ir a la versión completa