Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

reebr

[Resolvido] Problema com Menu utilizando [Conio2.h library]

Recommended Posts

Oi,

Estou criando um programinha em que o usuário possa Agendar e verificar disponibilidade de equipamentos (equipamentos de escola, exemplo: datashow, etc). Estou usando a biblioteca 'conio2.h' para fazer o MENU PRINCIPAL.

 

Através das teclas CIMA, BAIXO e ENTER o usuário pode escolher qual opção ele deseja (AGENDAR, PERQUISAR EQUIPAMENTO, SAIR). Acontece que, ao pressionar a tecla BAIXO duas vezes nenhum comando é executado, ele deveria ir para a opção SAIR, porém fica parada na segunda opção (obs: apertando uma vez apenas, funciona normalmente e a escolhe a segunda opção).

 

Não colocarei o código todo, e sim somente a parte que estou com problemas:

 

#include <stdio.h>
#include <stdlib.h>
#include <conio2.h>

#define CIMA 72
#define BAIXO 80
#define ENTER 13
#define ESC 27

char key, key2, key3;
int opc;

void MenuPrincipal(void)
{ 
 //menu FIXO
 gotoxy(3 ,6);
   textcolor(9);
   printf("C O N T R O L E    D E    E Q U I P A M E N T O S");
 gotoxy(1 ,6);
   textbackground(25);
   printf(" ");
 gotoxy(53,6);
   textbackground(25);
   printf("                            ");
 gotoxy(1,20);
   textbackground(25);
   printf("                                                                                ");
}


int MenuOpcao()
{ //menu de escolhas
 do
  {
   gotoxy(22,10); textcolor(9); textbackground(15);
     printf("Agendar Equipamento");
   gotoxy(22,12); textcolor(9); textbackground(0);
     printf("Checar disponibilidade de Equipamento");
   gotoxy(22,14); textcolor(9); textbackground(0);
     printf("Sair");

   key = getch();

   if(key == BAIXO)
    {
     system("CLS");
     MenuPrincipal();
     gotoxy(22,10); textcolor(9); textbackground(0);
       printf("Agendar Equipamento");
     gotoxy(22,12); textcolor(9); textbackground(15);
       printf("Checar disponibilidade de Equipamento");
     gotoxy(22,14); textcolor(9); textbackground(0);
       printf("Sair");

     key = getch();

     if(key == BAIXO) //AQUI ESTÁ O PROBLEMA, NÃO DESCE PARA A OPÇÃO "SAIR"
      {
       system("CLS");
       MenuPrincipal();
       gotoxy(22,10); textcolor(9); textbackground(0);
         printf("Agendar Equipamento");
       gotoxy(22,12); textcolor(9); textbackground(0);
         printf("Checar disponibilidade de Equipamento");
       gotoxy(22,14); textcolor(9); textbackground(15); //deveria ficar selecionada essa opção
         printf("Sair");

       key = getch();
      }
    // BLA BLA
    }
   else if(key == CIMA)
     {
      // BLA BLA BLA
     }
  }while(key != ESC);
}

main()
{
 MenuPrincipal();
 MenuOpcao();
}

OBS: Esse código todo não faz absolutamente NADA, é apenas o "menu" do programa.

 

Ele fica parado aqui:

 

ppbyV.png

 

Como eu faço para, ao apertar BAIXO 2 vezes, a seleção ir para o "SAIR" ?

O código está aparentemente certo :pinch:

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho ki vosce tem que faze outro progama mano :thumbsup:

 

Ta de brincadeira?

 

 

Enfim, consegui fazer a seta se mover, mas não estou conseguindo ler a opção escolhida.

 

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

#define CIMA 72
#define BAIXO 80
#define ENTER 13
#define ESC 27

int posicao = 10, aux, tecla;


//#############################################################################
void MenuFixo(void)
{ 
 gotoxy(3 ,6);
   textcolor(9);
   printf("C O N T R O L E    D E    E Q U I P A M E N T O S");
 gotoxy(1 ,6);
   textbackground(25);
   printf(" ");
 gotoxy(53,6);
   textbackground(25);
   printf("                            ");
 gotoxy(1,20);
   textbackground(25);
   printf("                                                                                ");
}


//#############################################################################
int MenuOpcao()
{ 

 //menu de escolhas
 do
  { 
   system("CLS");

   MenuFixo();
   gotoxy(22,10); textcolor(9); textbackground(0);
     printf("         Agendar Equipamento        ");
   gotoxy(22,12); textcolor(9); textbackground(0);
     printf("Checar disponibilidade de Equipamento");
   gotoxy(22,14); textcolor(9); textbackground(0);
     printf("               Sair                 ");

    //seta de opção
    textcolor(3);
    gotoxy(18,posicao);printf("%c%c",16,16);
    gotoxy(62,posicao);printf("%c%c",17,17);

    tecla = getch();


    if(tecla == BAIXO)
      {
       posicao = posicao + 2;

       if(posicao == 16)
         posicao = 10;
       }

      if(tecla == CIMA)
        {
         posicao = posicao - 2;

         if(posicao < 10)
           posicao = 14;
         }


  }while(tecla != ENTER);

 return posicao;
}

//#############################################################################


main()
{
 //ocultar cursor
 HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
     CONSOLE_CURSOR_INFO CursoInfo;
     CursoInfo.dwSize = 1;
     CursoInfo.bVisible = false;
     SetConsoleCursorInfo(hConsole, &CursoInfo);


 MenuOpcao();

 switch(posicao)
  {
   case 14:
        MessageBox(NULL, "oi", "oi", MB_OK);
        break;
  }


}

 

Criei um "switch" e um case só pra testar, não funcionou. Ao apertar ENTER estando na posição 14 o programa é fechado :upset:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.