[C con Clase] como se hace para ... ¿desea reiniciar el juego ?

Steven Davidson steven en conclase.net
Sab Ene 13 18:09:12 CET 2007


Hola Francesc,

El pasado 2007-01-12 22:13:23, Francesc Cabecerans escribió:
 
FC> El programa tiene a grandes rasgos esta estructura, entra mediante MAKEINTRESOURCE (PREGUNTAS) 
FC> que es un cuadro de dialogo que esta en un *.rc y se lanza un procedimiento, que incluye un temporizador.
FC> Cuando el timepo finaliza debe preguntar si desea salir o repetir el juego, y es la parte que no se como implementar

Veamos el código.

[CORTE]

FC>   case WM_TIMER:
FC>    {
FC>     switch (wParam) 
FC>     { 
FC>      case IDT_TIMER1:     // procesa 60 segundos 
FC>            if (tiempo==0) {KillTimer(hwnd, IDT_TIMER1);                       
FC> cuando se acaba el tiempo ....., aquí se debe preguntar con un cuadro de dialogo 
FC> si se quiere salir de la aplicación o bien
FC> se quiere empezar de nuevo  }

Sugiero usar un cuadro de mensaje con 'MessageBox()' para preguntar al usuario. Dependiendo de su respuesta, puedes salir o seguir. Para poder "reiniciar", sugiero inscribir o agregar (post) el mensaje 'WM_INITDIALOG' a la cola de mensajes para que vuelva a empezar. Esto implica que todas las asignaciones iniciales deberían darse en este mensaje, porque si no, el cuadro de diálogo no aparentará "reiniciarse".

Otra forma es cerrar el cuadro diálogo, pero recibir un código indicando si se debe reiniciar o no. Por ejemplo,

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    LPSTR szCmdLine, int iCmdShow )
{
  bool bRepetir = false;

  do
    DialogBoxParamA( hInstance, MAKEINTRESOURCE(PREGUNTAS), 0, WndProc,
                     &bRepetir );
  while( bRepetir );

  return 0;
}

A través de 'bRepetir' podemos comunicarnos con el cuadro de diálogo. No sugiero implementar esta técnica, ya que realmente se destruye el cuadro de diálogo, liberando los recursos. Esto requiere tiempo, y seguramente no es muy atractivo visualmente hablando.


Espero que esto te ayude.

Steven


Más información sobre la lista de distribución Cconclase