[VS2010 – C++ WinApi] 02 – Crear una Ventana

Codigo de plantilla:

// Librería para Windows Aplications de Win32
#include <windows.h>

// prototipo del callback procedure
LRESULT CALLBACK Otro(HWND hVENTANA_CALLBACK,UINT message,WPARAM wParam,LPARAM lParam);

//Rutina WinAPI Funcion principal 1 de 2
int WINAPI WinMain(HINSTANCE InstanciaVentana,HINSTANCE hPrevInst,LPSTR lpCmdLine,int nShowCmd)
{
// Registro de la clase?
WNDCLASSEX wClass; // Declarando una variable de tipo WNDCLASSEX
ZeroMemory(&wClass,sizeof(WNDCLASSEX)); // Inicializa la memoria

//Propiedades de WNDCLASSEX
wClass.cbSize=sizeof(WNDCLASSEX); //Tamaño de algo, buscar…
wClass.hbrBackground=(HBRUSH)COLOR_WINDOW; // FONDO DE LA VENTANA
wClass.hInstance=InstanciaVentana; // Instancia de la Ventana
wClass.lpfnWndProc=(WNDPROC)Otro; // defines el callback procedure
wClass.lpszClassName=”Window Class”; //Clase que utilizaremos más adelante

// Si no se registró correctamente entonces…
if(!RegisterClassEx(&wClass))
{
int nResult=GetLastError();
MessageBox(NULL, “Window class creation failed”, “Window Class Failed”, MB_ICONERROR);
}

// Creación de la ventana…
HWND hVENTANA=CreateWindowEx(NULL,
“Window Class”, // Clase previamente definida
“Plantilla de Ventana en WinApi”, // Titulo de la ventana
WS_OVERLAPPEDWINDOW,
0, // x ubicación Horizontal en el escritorio
0, // y ubicación Vertical en el escritorio
640, // width Ancho de la ventana creada por nosotros
480, // height Alto de la ventana creada por nosotros
NULL,
NULL,
InstanciaVentana, //Variable previamente definida
NULL);

// Si no se creó la ventana entonces…
if(!hVENTANA)
{
int nResult=GetLastError();
MessageBox(NULL, “Window creation failed”, “Window Creation Failed”, MB_ICONERROR);
}

// Comando para mostrar la ventana creada “hVENTANA”
ShowWindow(hVENTANA,nShowCmd);

// Preparando variables para el ciclo de mensajes T/D

// Declarando variable para mensaje tipo MSG…
MSG mensaje;
//Inicializando memoria de la variable mensaje
ZeroMemory(&mensaje,sizeof(MSG));

// Ciclo supero pro 😀 Translate Messaje/Dispatch Message (T/D)
while(GetMessage(&mensaje,NULL,0,0))
{
TranslateMessage(&mensaje);
// Dispatch Message manda a llamar a Callback 😉
DispatchMessage(&mensaje);
}

return 0;
}

// definición del callback procedure
// se va a llamar de la función DispatchMessage
LRESULT CALLBACK Otro(HWND hVENTANA_CALLBACK,UINT mensaje_callback,WPARAM wParam,LPARAM lParam)
{
switch(mensaje_callback)
{
case WM_CREATE:
{
//Aquí se crean los botones
break;
}

case WM_COMMAND:
{
switch (LOWORD(wParam))
{
//Aquí programas objetos
}

break;
}

case WM_DESTROY: // Botón cerrar (la tachita :D)
{
//Comando para cerrar ventana
PostQuitMessage(0);
return 0;
break;
}
}

return DefWindowProc(hVENTANA_CALLBACK,mensaje_callback,wParam,lParam);
}

 

-> Curso completo aquí <-

También te podría gustar...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *