[C con Clase] No se muestra la ventana con el API de Windows
David Reza
l.fix3r.l en gmail.com
Jue Ago 7 01:36:22 CEST 2008
Hola a todos, tengo un programa sencillo usando la API de Windows y lo he
hecho sin ver algún ejemplo. Cuando lo terminé lo compilé y no me dió ningún
error, pero al ejecutarse lo único que me sale es la consola y no se muestra
la ventana. Después de ésto revisé mi código con los ejemplos y no encuentro
nada mal, sin embargo la ventan no se muestra!
Aquí les dejo el código para que lo verifiquen y si encuentran algo mal me
puedan corregir.
Por si las dudas, utilizo DevCpp.
#include <windows.h>
#define CM_ABRIR 100
#define CM_GUARDAR 101
#define CM_SALIR 102
LRESULT CALLBACK WindowProcedure (HWND hWindow, UINT Mensaje, WPARAM wParam,
LPARAM lParam);
void InsertarMenu(HWND hWindow);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
lpszCmdParam, int nCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASSEX wincl;
// Rellenar la clase de ventana
wincl.lpfnWndProc = WindowProcedure;
wincl.lpszClassName = "Mi Clase";
wincl.lpszMenuName = NULL;
wincl.cbSize = sizeof(WNDCLASSEX);
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.style = CS_DBLCLKS;
wincl.hInstance = hInstance;
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
wincl.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
// Registrar la clase de ventana
if(!RegisterClassEx(&wincl)) return 0;
// Crear la ventana
hWnd = CreateWindowEx(0, "Mi Clase", "Introducción a las matemáticas",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT,
HWND_DESKTOP, NULL, hInstance, NULL);
// InsertarMenu
InsertarMenu(hWnd);
// Mostrar la ventana
ShowWindow(hWnd, SW_SHOWDEFAULT);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
/* WindowProcedure */
LRESULT CALLBACK WindowProcedure(HWND hWindow, UINT Mensaje, WPARAM wParam,
LPARAM lParam)
{
switch(Mensaje)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
DefWindowProc(hWindow, Mensaje, wParam, lParam);
}
return 0;
}
void InsertarMenu(HWND hWindow)
{
HMENU hBarraMenu, hMenu;
hBarraMenu = CreateMenu();
hMenu = CreateMenu();
AppendMenu(hMenu, MF_STRING, CM_ABRIR, "&Abrir");
AppendMenu(hMenu, MF_STRING, CM_GUARDAR, "&Guardar");
AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
AppendMenu(hBarraMenu, MF_POPUP | MF_STRING, (UINT)hMenu, "&Archivo");
SetMenu(hWindow, hBarraMenu);
}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080806/ac61e528/attachment.html>
Más información sobre la lista de distribución Cconclase