Mi Primera ventana en C++ PDF Imprimir E-mail
Escrito por Elmessias   
Miércoles, 03 de Marzo de 2010 19:38

//----------------------------------------------------------------------------//

// PULP PROGRAMMERS  //

//----------------------------------------------------------------------------//

// INCLUDES //////////////////////////////////////

#include "windows.h"

#include "windowsx.h"

#include "stdlib.h"

// CONSTANTES ////////////////////////////////////

#define NOMBRE_CLASE_VENTANA "Mi_Clase" // Nombre de la ventana

// GLOBALES ////////////////////////////////////

HWND hWnd; // Handle de la ventana

int nAncho = 400, nAlto = 300; // Tamaño de la ventana

//-------------------------------------------------------------------------------

// NOMBRE: WindowProc

// DESCRIPCION: El manejador de mensajes para nuestra clase de ventana

//-------------------------------------------------------------------------------

LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg,WPARAM wparam, LPARAM lparam)

{

switch(msg)

{

case WM_CREATE: // Cualquier función de inicialización podría incluirse aqui

return(0);

break;

case WM_PAINT:

return(0);

break;

case WM_DESTROY: // Cualquier función de cierre de la aplicación podría venir aqui

PostQuitMessage(0);

return(0);

break;

case WM_SIZE:

// Extraemos el nuevo tamaño de la ventana

nAncho = LOWORD(lparam);

nAlto = HIWORD(lparam);

return(0);

break;

}

// Llamamos al manejador de mensajes por defecto para cualquier otra cosa

return(DefWindowProc(hwnd, msg, wparam, lparam));

}

//------------------------------------------------------------------------------

// NOMBRE: WinMain

// DESCRIPCION: Punto de entrada en el programa. Define la clase de la ventana,

// la crea y ejecuta el bucle principal.

//------------------------------------------------------------------------------

int WINAPI WinMain(HINSTANCE hinstance, // Instancia a la aplicación

HINSTANCE hprevinstance, // Instancia a la aplicación anterior

LPSTR lpcmdline, // Cadena de la linea de comandos

int ncmdshow) // Parametro de modo

{

WNDCLASSEX ClaseVentana; // Nuestra clase de ventana

HWND hwnd; // Handle a nuestra ventana

MSG msg; // Variable de mensaje

ClaseVentana.cbSize = sizeof(WNDCLASSEX);

ClaseVentana.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;

ClaseVentana.lpfnWndProc = WindowProc; // Manejador de mensajes

ClaseVentana.cbClsExtra = 0; // Información extra de clase

ClaseVentana.cbWndExtra = 0; // Información extra de ventana

ClaseVentana.hInstance = hinstance; // Handle de la aplicación

ClaseVentana.hIcon = LoadIcon(NULL, IDI_WINLOGO);

ClaseVentana.hCursor = LoadCursor(NULL, IDC_ARROW);

ClaseVentana.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);

ClaseVentana.lpszMenuName = NULL; // Sin menú

ClaseVentana.lpszClassName = NOMBRE_CLASE_VENTANA; // Identificador

ClaseVentana.hIconSm = LoadIcon(NULL, IDI_WINLOGO); // Icono pequeño

 // Registramos la clase

if (!RegisterClassEx(&ClaseVentana))

return(0); // Ha habido un error al registrar la clase

 // Crea una ventana

if (!(hwnd = CreateWindowEx(NULL, // Estilo extendido (NO USADO)

NOMBRE_CLASE_VENTANA, // Identificador de la clase

"Pulp Programmers", // Titulo de la ventana

WS_OVERLAPPEDWINDOW | WS_VISIBLE, // Parametros de estilo

CW_USEDEFAULT, CW_USEDEFAULT, // Posición incial

nAncho, nAlto, // Tamaño inicial

NULL, // Handle al padre (Escritorio)

NULL, // Handle al menu (Ninguno)

hinstance, // Handle a la aplicación

NULL))) // Parametros extras (NO USADO)

return(0); // Ha habido un error al crear la ventana

 

// Inicializamos las variables globales

hWnd=hwnd;

 // AQUI IRÍA EL CODIGO DE INICIALIZACIÓN DEL JUEGO

// Ejemplo:

// InicializaOpenGL();

// InicializaEntrada();

// CargarJugadores();

// CargarMapa();

// BUCLE PRINCIPAL - Infinito (Solamente podemos salir si encontramos el mensaje WM_QUIT)

while(TRUE)

{

// Chequeamos la cola de mensajes

if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))

{

if (msg.message == WM_QUIT) // Salimos del bucle y cerramos la ventana

break;

TranslateMessage(&msg);

DispatchMessage(&msg); // Le mandamos el mensaje al gestor de mensajes

}

// AQUI IRÍA EL CODIGO DEL BUCLE PRINCIPAL DEL JUEGO:

// Ejemplo:

// ComprobarEntrada();

// ActualizaJugador();

// RenderizaMapa(); ...

}

// AQUI IRÍA EL CODIGO SOBRE LA LIBERACIÓN DE LOS RECURSOS CONSUMIDOS

// Ejemplo:

// EliminarGL();

// EliminarTexturas();

// EliminarDInput(); ...

 // Volvemos a Windows. Este es el codigo de salida del mensaje WM_QUIT

return(msg.wParam);

}

Lo podéis descargar de aquí

Última actualización el Miércoles, 03 de Marzo de 2010 20:01
 

| Design by: LernVid.com |