Sábado 14 de Diciembre de 2024, 16:00
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
c++ WINAPI
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: c++ WINAPI (Leído 1894 veces)
Garethsoul
Nuevo Miembro
Mensajes: 13
c++ WINAPI
«
en:
Jueves 18 de Febrero de 2010, 16:24 »
0
&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 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
;
}
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 MENUEX
BEGIN
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
Tweet
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
c++ WINAPI