ayuda de c++
Publicado por esteban (1 intervención) el 27/10/2006 20:48:51
hola, soy principiante en lo que se refiere a la programacion de videojuegos...
tengo un libro para programacion de videojuegos en windows y pues uso el direct 8SDK junto con el visual c++ version 6...
el codigo es el siguiente...
/*==========================================================================
*
* PROGRAMA DE EJEMPLO NUMERO 1
*
* PROGRAMA VACIO. SIRVE DE PLANTILLA PARA EL FUTURO PROGRAMA
* TERMINA AL PULSARSE UNA LA TECLA
*
***************************************************************************/
//Se definen algunos datos generales como el nombre del programa.
#define NAME "EJEMPLO 1"
#define TITLE "COMO HACER UN VIDEOJUEGO 1"
#define WIN32_LEAN_AND_MEAN
//Se incluyen los ficheros fuente que son necesarios.
#include <windows.h>
#include <windowsx.h>
//Se incluyen otros ficheros fuente necesarios.
#include <stdlib.h>
#include <stdarg.h>
#include "resource.h"
//Este es el manejador de la ventana de la aplicacion.
HWND hwnd;
BOOL bActive; // almacena si la aplicacion esta activa
//Programa principal en si mismo. Aqui estara contenido el programa principal.
void game(void)
{
}
//WindowProc. Se ejecuta continuamente, es el blucle de mensajes de Windows.
long FAR PASCAL WindowProc( HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam )
{
//Analiza los mensajes
switch( message )
{
//Si se activa la aplicacion, bACtiva pasa a ser verdadero.
case WM_ACTIVATEAPP:
bActive = TRUE;
break;
//En caso de crearse la aplicacion no hace nada en especial.
case WM_CREATE:
break;
//En caso de variarse el curso tampoco realiza nada en especial.
case WM_SETCURSOR:
SetCursor(NULL);
return true;
//En caso de pulsarse una tecla, se realiza lo siguiente
case WM_KEYDOWN:
//Si se pulsa una tecla, manda un mensaje de cerrar la
//aplicacion.
PostMessage(hWnd, WM_CLOSE, 0, 0);
break;
//En caso de acabarse la aplicacion se manda un mensaje de salir.
case WM_DESTROY:
PostQuitMessage( 0 );
break;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
//Esta funcion es la primera que se ejecuta.
//En ella se crea Direct-Draw y se llama a la inicializacion
//de otras rutinas.
static BOOL doInit( HINSTANCE hInstance, int nCmdShow )
{
//Estructuras de datos necesarias para crear la ventana.
WNDCLASS wc;
//Define las caracteristicas de la ventana de la aplicacion
//que se esta creando.
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon( hInstance, IDI_APPLICATION );
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
wc.hbrBackground = NULL;
wc.lpszMenuName = NAME;
wc.lpszClassName = NAME;
RegisterClass( &wc );
//Llamada a CreateWindowsEx, crea la ventana en si.
hwnd = CreateWindowEx(
WS_EX_TOPMOST,
NAME,
TITLE,
WS_POPUP,
0, 0,
GetSystemMetrics( SM_CXSCREEN ),
GetSystemMetrics( SM_CYSCREEN ),
NULL,
NULL,
hInstance,
NULL );
//Si no se ha creado la ventana, retorna generando un error.
if( !hwnd )
{
return FALSE;
}
//Muestra la ventana y la actualiza.
ShowWindow( hwnd, nCmdShow );
UpdateWindow( hwnd );
//Todo ha salido bien, Retorna TRUE.
return TRUE;
}
//Llamada al bucle de mensajes. Desde aqui se llama al WindowProc.
int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
lpCmdLine = lpCmdLine;
hPrevInstance = hPrevInstance;
//En caso de que fallara la inicializacion, se retorna FALSE.
if( !doInit( hInstance, nCmdShow ) )
{
return FALSE;
}
//Se ejecuta siempre.
while( 1 )
{
//Si hay algun mensaje, se llama a WindowProc para
//que gestione dicho mensaje.
if( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ))
{
if( !GetMessage( &msg, NULL, 0, 0 ) ) return msg.wParam;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
//Si la aplicacion esta activa, se llama al nucleo del
//programa en si.
if( bActive )
{
game();
}
//En otro caso, espera la llegada de mensajes.
else
{
WaitMessage();
}
}
}
el problema es que cuando lo compilo, no muestra errores ni nada...
pero cuando lo voy a ejecutar sale que hay un error con el (_main), y que no lo puedo ejecutar...
nose que sea, falta una libreria?
si alguien lo ejecuta bien, que me diga como hizo...
gracias...
tengo un libro para programacion de videojuegos en windows y pues uso el direct 8SDK junto con el visual c++ version 6...
el codigo es el siguiente...
/*==========================================================================
*
* PROGRAMA DE EJEMPLO NUMERO 1
*
* PROGRAMA VACIO. SIRVE DE PLANTILLA PARA EL FUTURO PROGRAMA
* TERMINA AL PULSARSE UNA LA TECLA
*
***************************************************************************/
//Se definen algunos datos generales como el nombre del programa.
#define NAME "EJEMPLO 1"
#define TITLE "COMO HACER UN VIDEOJUEGO 1"
#define WIN32_LEAN_AND_MEAN
//Se incluyen los ficheros fuente que son necesarios.
#include <windows.h>
#include <windowsx.h>
//Se incluyen otros ficheros fuente necesarios.
#include <stdlib.h>
#include <stdarg.h>
#include "resource.h"
//Este es el manejador de la ventana de la aplicacion.
HWND hwnd;
BOOL bActive; // almacena si la aplicacion esta activa
//Programa principal en si mismo. Aqui estara contenido el programa principal.
void game(void)
{
}
//WindowProc. Se ejecuta continuamente, es el blucle de mensajes de Windows.
long FAR PASCAL WindowProc( HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam )
{
//Analiza los mensajes
switch( message )
{
//Si se activa la aplicacion, bACtiva pasa a ser verdadero.
case WM_ACTIVATEAPP:
bActive = TRUE;
break;
//En caso de crearse la aplicacion no hace nada en especial.
case WM_CREATE:
break;
//En caso de variarse el curso tampoco realiza nada en especial.
case WM_SETCURSOR:
SetCursor(NULL);
return true;
//En caso de pulsarse una tecla, se realiza lo siguiente
case WM_KEYDOWN:
//Si se pulsa una tecla, manda un mensaje de cerrar la
//aplicacion.
PostMessage(hWnd, WM_CLOSE, 0, 0);
break;
//En caso de acabarse la aplicacion se manda un mensaje de salir.
case WM_DESTROY:
PostQuitMessage( 0 );
break;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
//Esta funcion es la primera que se ejecuta.
//En ella se crea Direct-Draw y se llama a la inicializacion
//de otras rutinas.
static BOOL doInit( HINSTANCE hInstance, int nCmdShow )
{
//Estructuras de datos necesarias para crear la ventana.
WNDCLASS wc;
//Define las caracteristicas de la ventana de la aplicacion
//que se esta creando.
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon( hInstance, IDI_APPLICATION );
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
wc.hbrBackground = NULL;
wc.lpszMenuName = NAME;
wc.lpszClassName = NAME;
RegisterClass( &wc );
//Llamada a CreateWindowsEx, crea la ventana en si.
hwnd = CreateWindowEx(
WS_EX_TOPMOST,
NAME,
TITLE,
WS_POPUP,
0, 0,
GetSystemMetrics( SM_CXSCREEN ),
GetSystemMetrics( SM_CYSCREEN ),
NULL,
NULL,
hInstance,
NULL );
//Si no se ha creado la ventana, retorna generando un error.
if( !hwnd )
{
return FALSE;
}
//Muestra la ventana y la actualiza.
ShowWindow( hwnd, nCmdShow );
UpdateWindow( hwnd );
//Todo ha salido bien, Retorna TRUE.
return TRUE;
}
//Llamada al bucle de mensajes. Desde aqui se llama al WindowProc.
int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
lpCmdLine = lpCmdLine;
hPrevInstance = hPrevInstance;
//En caso de que fallara la inicializacion, se retorna FALSE.
if( !doInit( hInstance, nCmdShow ) )
{
return FALSE;
}
//Se ejecuta siempre.
while( 1 )
{
//Si hay algun mensaje, se llama a WindowProc para
//que gestione dicho mensaje.
if( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ))
{
if( !GetMessage( &msg, NULL, 0, 0 ) ) return msg.wParam;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
//Si la aplicacion esta activa, se llama al nucleo del
//programa en si.
if( bActive )
{
game();
}
//En otro caso, espera la llegada de mensajes.
else
{
WaitMessage();
}
}
}
el problema es que cuando lo compilo, no muestra errores ni nada...
pero cuando lo voy a ejecutar sale que hay un error con el (_main), y que no lo puedo ejecutar...
nose que sea, falta una libreria?
si alguien lo ejecuta bien, que me diga como hizo...
gracias...
Valora esta pregunta


0