<div dir="ltr">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!<br>
<br>Aquí les dejo el código para que lo verifiquen y si encuentran algo mal me puedan corregir. <br><br>Por si las dudas, utilizo DevCpp.<br><br><blockquote>#include <windows.h><br><br>#define CM_ABRIR 100<br>#define CM_GUARDAR 101<br>
#define CM_SALIR 102<br><br>LRESULT CALLBACK WindowProcedure (HWND hWindow, UINT Mensaje, WPARAM wParam, LPARAM lParam);<br>void InsertarMenu(HWND hWindow);<br><br>int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)<br>
{<br> HWND hWnd;<br> MSG msg;<br> WNDCLASSEX wincl;<br> <br> // Rellenar la clase de ventana<br> wincl.lpfnWndProc = WindowProcedure;<br> wincl.lpszClassName = "Mi Clase";<br> wincl.lpszMenuName = NULL;<br>
wincl.cbSize = sizeof(WNDCLASSEX);<br> wincl.cbClsExtra = 0;<br> wincl.cbWndExtra = 0;<br> wincl.style = CS_DBLCLKS;<br> <br> wincl.hInstance = hInstance;<br> wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);<br>
wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);<br> wincl.hCursor = LoadCursor(NULL, IDC_ARROW);<br> wincl.hbrBackground = (HBRUSH)COLOR_BACKGROUND;<br> <br> // Registrar la clase de ventana<br> if(!RegisterClassEx(&wincl)) return 0;<br>
<br> // Crear la ventana<br> hWnd = CreateWindowEx(0, "Mi Clase", "Introducción a las matemáticas", WS_OVERLAPPEDWINDOW,<br> CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,<br>
HWND_DESKTOP, NULL, hInstance, NULL);<br> <br> // InsertarMenu<br> InsertarMenu(hWnd); <br> <br> // Mostrar la ventana<br> ShowWindow(hWnd, SW_SHOWDEFAULT);<br>
<br> while(GetMessage(&msg, NULL, 0, 0))<br> {<br> TranslateMessage(&msg);<br> DispatchMessage(&msg);<br> }<br> <br> return msg.wParam;<br>}<br><br><br>/* WindowProcedure */<br>
LRESULT CALLBACK WindowProcedure(HWND hWindow, UINT Mensaje, WPARAM wParam, LPARAM lParam)<br>{<br> switch(Mensaje)<br> {<br> case WM_DESTROY:<br> PostQuitMessage(0);<br> break;<br>
default:<br> DefWindowProc(hWindow, Mensaje, wParam, lParam);<br> }<br> <br> return 0;<br>}<br><br>void InsertarMenu(HWND hWindow)<br>{<br> HMENU hBarraMenu, hMenu;<br>
<br> hBarraMenu = CreateMenu();<br> hMenu = CreateMenu();<br> <br> AppendMenu(hMenu, MF_STRING, CM_ABRIR, "&Abrir");<br> AppendMenu(hMenu, MF_STRING, CM_GUARDAR, "&Guardar");<br>
AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);<br> <br> AppendMenu(hBarraMenu, MF_POPUP | MF_STRING, (UINT)hMenu, "&Archivo");<br> <br> SetMenu(hWindow, hBarraMenu);<br>}<br></blockquote>
</div>