/* Autor: Leandro Bernsmuller
Gerencia caixa de dialogo que fica aberta à espera de uma variavel fornecida
ser TRUE, para fechar automaticamente. */



#include <windows.h>
#include <windowsx.h>
#include "..\princip\defs.h"
#include "dlgesper.h"



// ponteiro para variavel externa
BOOL*
   pbTERMINAR;
char
   *pszTEXTO;



// Para testar variavel eh gerada uma mensagem WM_TIMER a cada segundo.
// Cada vez testa o valor do flag apontado pelo ponteiro.
// Se for TRUE termina o dialogo com sucesso.



/* Usado para tratar mensagens na caixa de dialogo
**********************************************************/
BOOL FAR PASCAL ProcDlgEspera ( HWND hWnd, UINT uMsg, 
                               WPARAM wParam, LPARAM lParam )
{
  switch ( uMsg ) {

    case WM_TIMER:
       {
          if ( *pbTERMINAR ) {
             KillTimer ( hWnd, 1 );
             ::EndDialog ( hWnd, TRUE );
          }
          break;
       }

    // botao clicado
    case WM_COMMAND:
      {

         // qual botao
         switch ( LOWORD ( wParam ) ) {

            case IDCANCEL:

               // cancelou
               *pbTERMINAR = TRUE;
               KillTimer ( hWnd, 1 );
               ::EndDialog ( hWnd, FALSE );
               break;
         }
      }
      break;

    case WM_INITDIALOG:
      {

         // texto para dialogo
         SetDlgItemText ( hWnd, IDC_ESPERA_TEXTO, pszTEXTO );

         // configura um timer - vai gerar uma mensagem a cada segundo
         SetTimer ( hWnd, 1, 1000, NULL );

         return TRUE;
      }
      break;
  }

  return FALSE;
}
         


/* Faz o dialogo
hApl - handler da aplicacao
pszTexto - um texto a ser exibido
pbVar - ponteiro para variavel que deve ser usada nos testes para
        terminar caixa
retorna TRUE - certo (variavel passou a TRUE), FALSE - cancelou
**********************************************************/
BOOL FazDialogo_Espera ( HINSTANCE hApl, char* pszTexto, BOOL* pbVarTeste )
{
   pszTEXTO = pszTexto;
   pbTERMINAR = pbVarTeste;

   return DialogBox
            ( hApl, MAKEINTRESOURCE ( IDD_DIALOG5 ), NULL,
              (DLGPROC) ProcDlgEspera );
}
