elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: [AIO elhacker.NET 2015] Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  FUncion main y Funcion Winmain
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: FUncion main y Funcion Winmain  (Leído 1,537 veces)
mapers


Desconectado Desconectado

Mensajes: 638


Ver Perfil
FUncion main y Funcion Winmain
« en: 30 Enero 2011, 16:43 »

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
  1. int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
  2.    LPSTR lpszCmdLine, int nCmdShow)
  3. {
  4. UNREFERENCED_PARAMETER(lpszCmdLine);  // Para que no moleste al compilar, no lo usamos.
  5. IdAplicacion = hInstance;   // Guardo el identificador del programa, luego lo usamos.
  6.  
  7. // Cargo los arrays para simular la funcion seno y coseno, siempre que sea en grados enteros.
  8. // Las funciones sen y cos admiten el angulo en radianes asi que lo convierto a grados:
  9. // grados = (radianes * PI)/180.
  10. for(int i=0; i<360; i++) { seno[i]=sin((double) (i*PI/180)); coseno[i]=cos((double)(i*PI/180));  }
  11.  
  12. // Voy a rellenar el array de los ladrillos del muro con los datos del array auxiliar que contiene
  13. // al principio los datos. En el array original estara siempre el muro y el segundo array sera el
  14. // que usemos en el juego y en el que iremos borrando los ladrillos segun juguemos. Antes de cada
  15. // partida tendremos que volver a rellenar el array con los datos originales.
  16.  
  17. // Pongo la variable con el numero de ladrillos a 0
  18. NLadrillos=0;
  19. // Cargo los datos del array "ladrillos" con los del array "muro" (el que siempre tiene los datos),
  20. // el nivel 0, el primero. Mientras, cuento los ladrillos.
  21. for(int i=0; i<NUMERO_LADRILLOS; i++) { ladrillos[i] = muro[0][i]; if(muro[0][i] != 0) NLadrillos++; }
  22.  
  23. CreaVentana(); // Funcion que crea la ventana. Definida mas arriba.
  24.  
  25. // Definimos un timer de windows con identificativo 1 y
  26. // que se ejecuta cada 15 segundos.
  27. // Sera el que nos indique si debemos cambiar el punto
  28. // de vista del juego.
  29. SetTimer(IdVentana, 1, 15000, NULL);
  30.  
  31. IniciaGL(); // Funcion para inicializar OpenGL. Definida mas arriba.
  32.  
  33. // Este es el bucle habitual de windows que se esta ejecutando continuamente hasta que recibe
  34. // el mensaje de acabar (ya lo hemos preparado en la funcion "ProcesaMensajes" asociada a
  35. // la ventana, tambien asociada a este programa atraves de su identificativo).
  36. MSG Mensaje; // Varible para contener los mensajes que van llegando.
  37.  
  38. // Definimos tres variables de 64 bits que usaremos para
  39. // obtener el dato de tiempo en cada pasada del bucle
  40. LARGE_INTEGER t1,t2,frecuencia;
  41. // Esta variable de tipo coma flotante de doble precision
  42. // para guardar el tiempo en segundos que tarda cada pasada
  43. // del programa.
  44. double segundos=0;
  45.  
  46. // Obtenemos la primera toma de tiempo en t1.
  47. QueryPerformanceCounter(&t1);
  48. // Obtenemos la frecuencia del procesador para
  49. // calcular, despues, en segundos lo que tarda
  50. // nuestro bucle en base a dos tomas de tiempo
  51. // con "QueryPerformanceCounter".
  52. QueryPerformanceFrequency(&frecuencia);
  53.  
  54. // Entramos en el bucle del programa
  55. while(TRUE) // Se ejecuta continuamente.
  56. {
  57.  
  58. // Tratamos los mensajes que haya de la forma habitual
  59. // Exploramos la cola de mensajes.
  60. if(PeekMessage(&Mensaje, NULL, 0, 0, PM_NOREMOVE))
  61. {// procesándolos adecuadamente
  62. // En este caso terminamos.
  63. if(!GetMessage(&Mensaje, NULL, 0, 0)) return (int)Mensaje.wParam;
  64. TranslateMessage(&Mensaje);
  65. DispatchMessage(&Mensaje);
  66. }
  67. // Eliminamos la espera. Ahora queremos ejecutar continuamente
  68. // aunque no haya mensajes.
  69. //else WaitMessage(); // en caso contrario esperamos un mensaje
  70.  
  71.  
  72. // Tomo el segundo tiempo en t2
  73. QueryPerformanceCounter(&t2);
  74. // Calculo los segundos en base a los dos tiempos, t1 y t2.
  75. // t2, excepto en la primera pasada del bucle, sera siempre
  76. // mayor que t1 (segundos es un decir, sera muuucho menos
  77. // de un segundo).
  78. segundos = (double)(t2.QuadPart-t1.QuadPart)/(double)frecuencia.QuadPart;
  79.  
  80. // Si, en base a los segundos calculados y el frame rate que queremos,
  81. // toca ya pintar otra vez la escena, tomamos de nuevo tiempo en t1 y
  82. // pintamos de nuevo. Si no toca volvemos al principio del bucle, vemos
  83. // si hay mensajes y tomamos de nuevo el segundo tiempo y comprobamos
  84. // otra vez.
  85. // Aprovechamos para calcular el frame rate real (si la maquina fuera muy
  86. // lenta o tuvieramos algun problema en el codigo, podria ser menor de lo
  87. // que hemos fijado)
  88. if( (segundos) >= 1.0f/(double)FPS_que_queremos )
  89. {
  90. // Tomamos el primer tiempo en t1.
  91. QueryPerformanceCounter(&t1);
  92. // Calculamos frame rate real.
  93. // Sera el numero de veces que el trocito de segundo que tarda
  94. // nuestro bucle, cabe en 1 segundo entero.
  95. FPS_reales = 1.0f/segundos;
  96. // Pintamos nuestra escena si la ventana
  97. // esta activa.
  98. if(PROGRAMA_ACTIVO) Pinta();  
  99.  
  100. // Al terminar el bucle pongo a 0 nuestro
  101. // valor para la rueda del raton
  102. Raton.rueda=0;
  103. // Guardo las coordenadas del raton como las anteriores
  104. // ahora que las he usado como actuales.
  105. Raton.prev_x = Raton.x;
  106. Raton.prev_y = Raton.y;
  107.  
  108. }
  109.  
  110. } // Fin while.
  111. } // fin WinMain.
  112. //------------------------------------------------------------------
  113.  
  114.  



En línea

oPen syLar


Desconectado Desconectado

Mensajes: 769


The Best of You..


Ver Perfil WWW
Re: FUncion main y Funcion Winmain
« Respuesta #1 en: 5 Febrero 2011, 15:44 »

Primero que quieres hacer.? .... Todo esto (a vuelo de pajaro) esta bien.. No veo porque pasarlo a main()


En línea

Siempre habra 2 verdades, la que quieres creer y la que no aceptaras
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines