Ir para conteúdo
Fórum Script Brasil
  • 0

Cadastro interativo em C


Passaglia

Pergunta

Gostaria de saber se existe alguma forma de se fazer uma função para cadastrar (clientes, por exemplo), em C, na qual a tela fique congelada e o usuário digite o dado que quiser. Por exemplo, um código que faça imprimir isso na tela:

Nome:

Telefone:

End:

CEP:

e só depois da impressão de tudo que o usuário iria inserir dados, navegando com as setas do teclado.

Obrigado.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Tem sim.

Na biblioteca windows.h tem funções para você posicionar o cursor onde quiser na tela, mudar de cor, gerencia eventos do teclado, mouse, etc.

Esse código abaixo mostra os eventos do mouse e teclado, experimente mover o mouse, clicar no console e pressionar alguma tecla. Você estudando ele vai poder fazer o que você quer. Eu já fiz uma tela de cadastro, mas deu pau no meu PC e perdi o código. Qualquer coisa posta sua dúvida.

#include <windows.h>
#include <stdio.h>


VOID KeyEventProc(KEY_EVENT_RECORD); 
VOID MouseEventProc(MOUSE_EVENT_RECORD); 
VOID ResizeEventProc(WINDOW_BUFFER_SIZE_RECORD); 
HANDLE Hsaida;

int main(VOID) 
{ 
    
    DWORD cNumRead, i; 
    INPUT_RECORD irInBuf[128]; 
    HANDLE Hentrada;  
    // Get the standard input handle. 

    Hentrada = GetStdHandle(STD_INPUT_HANDLE); 
    Hsaida = GetStdHandle(STD_OUTPUT_HANDLE);

    SetConsoleMode(Hentrada, ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT );
    
        SetConsoleTitle("Console de Teste");

    // Loop to read and handle the input events. 

    while (1) 
    { 
        // Wait for the events. 

        ReadConsoleInput( 
                Hentrada,      // input buffer handle 
                irInBuf,     // buffer to read into 
                128,         // size of read buffer 
                &cNumRead);  // number of records read 
          
        
        // Dispatch the events to the appropriate handler. 

        for (i = 0; i < cNumRead; i++) 
        {
            switch(irInBuf[i].EventType) 
            { 
                case KEY_EVENT: // keyboard input 
                    KeyEventProc(irInBuf[i].Event.KeyEvent); 
                    break; 

                case MOUSE_EVENT: // mouse input 
                    MouseEventProc(irInBuf[i].Event.MouseEvent); 
                    break; 

                case WINDOW_BUFFER_SIZE_EVENT: // scrn buf. resizing 
                     ResizeEventProc( 
                        irInBuf[i].Event.WindowBufferSizeEvent); 
                    break; 

                case FOCUS_EVENT:  // disregard focus events 

                case MENU_EVENT:   // disregard menu events 
                    break; 

                default: 
                    
                    break; 
            } 
        }
    } 

    return 0; 
}



VOID KeyEventProc(KEY_EVENT_RECORD quer)
{

   COORD pos;
   pos.X=1; 
   pos.Y=5;
   SetConsoleCursorPosition(Hsaida,pos);
   
    if(quer.bKeyDown)
       {
        if(quer.uChar.AsciiChar !=0) printf("Letra: %c          ",quer.uChar.AsciiChar);
             else printf("Especial: %d         ",quer.wVirtualKeyCode);
       }          
    else printf("Tecla Suspensa");
}

void MouseEventProc(MOUSE_EVENT_RECORD mer)
{
  COORD pos;
  pos.X=1;


    switch(mer.dwEventFlags)
    {
        case 0:
            pos.Y=3;
            SetConsoleCursorPosition(Hsaida,pos);
            printf("button press: %d                  ",mer.dwButtonState);
            break;
        case DOUBLE_CLICK:
            pos.Y=3;
            SetConsoleCursorPosition(Hsaida,pos);
            printf("double click                      ");
            break;
       case MOUSE_MOVED:
            pos.Y=1;
            SetConsoleCursorPosition(Hsaida,pos);
            printf("Posicao mouse (%2d, %2d)",mer.dwMousePosition.X, mer.dwMousePosition.Y);
            break;
        case MOUSE_WHEELED:
            pos.Y=3;
            SetConsoleCursorPosition(Hsaida,pos);
            printf("vertical mouse wheel: %d",mer.dwButtonState);
            break;
        default:
            pos.Y=3;
            SetConsoleCursorPosition(Hsaida,pos);
            printf("nada                 ");
            break;
    }
    
}

VOID ResizeEventProc(WINDOW_BUFFER_SIZE_RECORD wbsr)
{
   COORD pos;
   pos.X=1; 
   pos.Y=7;
   SetConsoleCursorPosition(Hsaida,pos);
   printf("\n\nResize event\n\n");
}

Abraço.

Editado por RonaldoRG
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...