FUncion main y Funcion Winmain

Iniciado por mapers, 30 Enero 2011, 16:43 PM

0 Miembros y 1 Visitante están viendo este tema.

mapers

buenas señores del foro quisiera esta ves que me ayuden a pasar una funcion winmain a main .......................si esque se puede claro esta a ver si  le hechan un ojo a mi codigo y me dan una mano gracias


Código (cpp) [Seleccionar]

int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpszCmdLine, int nCmdShow)
{
UNREFERENCED_PARAMETER(lpszCmdLine);  // Para que no moleste al compilar, no lo usamos.
IdAplicacion = hInstance;   // Guardo el identificador del programa, luego lo usamos.

// Cargo los arrays para simular la funcion seno y coseno, siempre que sea en grados enteros.
// Las funciones sen y cos admiten el angulo en radianes asi que lo convierto a grados:
// grados = (radianes * PI)/180.
for(int i=0; i<360; i++) { seno[i]=sin((double) (i*PI/180)); coseno[i]=cos((double)(i*PI/180));  }

// Voy a rellenar el array de los ladrillos del muro con los datos del array auxiliar que contiene
// al principio los datos. En el array original estara siempre el muro y el segundo array sera el
// que usemos en el juego y en el que iremos borrando los ladrillos segun juguemos. Antes de cada
// partida tendremos que volver a rellenar el array con los datos originales.

// Pongo la variable con el numero de ladrillos a 0
NLadrillos=0;
// Cargo los datos del array "ladrillos" con los del array "muro" (el que siempre tiene los datos),
// el nivel 0, el primero. Mientras, cuento los ladrillos.
for(int i=0; i<NUMERO_LADRILLOS; i++) { ladrillos[i] = muro[0][i]; if(muro[0][i] != 0) NLadrillos++; }

CreaVentana(); // Funcion que crea la ventana. Definida mas arriba.

// Definimos un timer de windows con identificativo 1 y
// que se ejecuta cada 15 segundos.
// Sera el que nos indique si debemos cambiar el punto
// de vista del juego.
SetTimer(IdVentana, 1, 15000, NULL);

IniciaGL(); // Funcion para inicializar OpenGL. Definida mas arriba.
 
// Este es el bucle habitual de windows que se esta ejecutando continuamente hasta que recibe
// el mensaje de acabar (ya lo hemos preparado en la funcion "ProcesaMensajes" asociada a
// la ventana, tambien asociada a este programa atraves de su identificativo).
MSG Mensaje; // Varible para contener los mensajes que van llegando.

// Definimos tres variables de 64 bits que usaremos para
// obtener el dato de tiempo en cada pasada del bucle
LARGE_INTEGER t1,t2,frecuencia;
// Esta variable de tipo coma flotante de doble precision
// para guardar el tiempo en segundos que tarda cada pasada
// del programa.
double segundos=0;

// Obtenemos la primera toma de tiempo en t1.
QueryPerformanceCounter(&t1);
// Obtenemos la frecuencia del procesador para
// calcular, despues, en segundos lo que tarda
// nuestro bucle en base a dos tomas de tiempo
// con "QueryPerformanceCounter".
QueryPerformanceFrequency(&frecuencia);

// Entramos en el bucle del programa
while(TRUE) // Se ejecuta continuamente.
{

// Tratamos los mensajes que haya de la forma habitual
// Exploramos la cola de mensajes.
if(PeekMessage(&Mensaje, NULL, 0, 0, PM_NOREMOVE))
{// procesándolos adecuadamente
// En este caso terminamos.
if(!GetMessage(&Mensaje, NULL, 0, 0)) return (int)Mensaje.wParam;
TranslateMessage(&Mensaje);
DispatchMessage(&Mensaje);
}
// Eliminamos la espera. Ahora queremos ejecutar continuamente
// aunque no haya mensajes.
//else WaitMessage(); // en caso contrario esperamos un mensaje


// Tomo el segundo tiempo en t2
QueryPerformanceCounter(&t2);
// Calculo los segundos en base a los dos tiempos, t1 y t2.
// t2, excepto en la primera pasada del bucle, sera siempre
// mayor que t1 (segundos es un decir, sera muuucho menos
// de un segundo).
segundos = (double)(t2.QuadPart-t1.QuadPart)/(double)frecuencia.QuadPart;

// Si, en base a los segundos calculados y el frame rate que queremos,
// toca ya pintar otra vez la escena, tomamos de nuevo tiempo en t1 y
// pintamos de nuevo. Si no toca volvemos al principio del bucle, vemos
// si hay mensajes y tomamos de nuevo el segundo tiempo y comprobamos
// otra vez.
// Aprovechamos para calcular el frame rate real (si la maquina fuera muy
// lenta o tuvieramos algun problema en el codigo, podria ser menor de lo
// que hemos fijado)
if( (segundos) >= 1.0f/(double)FPS_que_queremos )
{
// Tomamos el primer tiempo en t1.
QueryPerformanceCounter(&t1);
// Calculamos frame rate real.
// Sera el numero de veces que el trocito de segundo que tarda
// nuestro bucle, cabe en 1 segundo entero.
FPS_reales = 1.0f/segundos;
// Pintamos nuestra escena si la ventana
// esta activa.
if(PROGRAMA_ACTIVO) Pinta(); 

// Al terminar el bucle pongo a 0 nuestro
// valor para la rueda del raton
Raton.rueda=0;
// Guardo las coordenadas del raton como las anteriores
// ahora que las he usado como actuales.
Raton.prev_x = Raton.x;
Raton.prev_y = Raton.y;

}

} // Fin while.
} // fin WinMain.
//------------------------------------------------------------------




oPen syLar

Primero que quieres hacer.? .... Todo esto (a vuelo de pajaro) esta bien.. No veo porque pasarlo a main()
Siempre habra 2 verdades, la que quieres creer y la que no aceptaras