/* Autor: Leandro Bernsmuller
Gerencia o dialogo que pede a porta de comunicacao via sockets.
Usado para tutor. */



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



// faz comunicacao entre caixa de dialogo e programa:
char
   szPORTA_SERV [ 300 ];



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

    // botao clicado
    case WM_COMMAND:
      {

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

            case IDCANCEL:
               ::EndDialog ( hWnd, FALSE );
               break;

            case IDOK:
               GetDlgItemText ( hWnd, IDC_EDIT1, szPORTA_SERV, 299 );
               ::EndDialog ( hWnd, TRUE );
               break;
         }
      }
      break;

    case WM_INITDIALOG:
      {
         SetDlgItemText ( hWnd, IDC_EDIT1, STR_PORTA_DEFAULT_SOCK );
         return TRUE;
      }
      break;
  }

  return FALSE;
}
         


/* Faz o dialogo
hInstancia - id desse processo
pszPortaServidorSock - string que aponta onde o numero da porta
deve ser escrito.
retorna: TRUE - dado fornecido / FALSE - cancela
**********************************************************/
BOOL FazDialogo_PortaServidorSock ( HINSTANCE hInstancia, char* pszPortaServidorSock )
{
   szPORTA_SERV [ 0 ] = 0;
   
   if ( ::DialogBox ( hInstancia,
                      MAKEINTRESOURCE ( IDD_DIALOG9 ),
                      NULL,
                     (DLGPROC) ProcDlgPortaServ ) ) {

      strcpy ( pszPortaServidorSock, szPORTA_SERV );
      return TRUE;
   }

   return FALSE;
}
