Ola a todos! Tenho um trabalho de fazer menu gráfico, mas surgiu um obstáculo e espero que me ajudem a resolve-lo.
Uso Borland C++ 5.02 e fiz o senguinte código:
#include <conio.h>
#include <graphics.h>
#include <stdio.h> // Inclusão de bibliotecas
#include <stdlib.h>
#include <iostream.h>
void funcao1();
void funcao2(); // declarei estas funções mas ainda não as implementei, primeiro tentei fazer o menu que é o objetivo do trabalho
void sair();
void main()
{
char menu[]=".:: Menu Principal ::.", ch;
char entrada;
int valor, tamanho_letra, centralizar;
int gdriver = DETECT, gmode, errorcode; // faz a auto-detecção do adaptador grafico, modo grafico
initgraph(&gdriver, &gmode, "bgi\\"); // inicia o ambiente grafico
errorcode = graphresult(); // recebe o resultado do ambiente grafico para verificação de erros
if (errorcode != grOk) { // em caso de erro, o programa é finalizado
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
valor = textwidth(menu); // valor recebe o tamanho da string menu
tamanho_letra = textheight("H"); // tamanho_letra recebe, como deve ser obvio, o tamanho de uma letra maiúscula
centralizar = (getmaxx() - valor)/2;
setfillstyle(1,2);
bar(0,0,getmaxx(),6+tamanho_letra);
outtextxy(centralizar, 6, menu); // Escreve menu na tela
outtextxy(30,30, "1: Funcao 1");
outtextxy(30,35+tamanho_letra, "2: Funcao 2");
outtextxy(30,40+(2*tamanho_letra), "3: Sair");
while(1) // Um laço infinito
{
ch = getche(); // ch recebe a opção digitada pelo usuário
if(ch == '1') // se ch for igual a 1, a opção 1 é selecionada e as demais ficam normais
{
setfillstyle(1,10);
bar(0,28,getmaxx(),32+tamanho_letra);
setcolor(BLACK);
outtextxy(30,30, "1: Funcao 1");
setfillstyle(1,0);
bar(0,33+tamanho_letra,getmaxx(),37+(2*tamanho_letra));
setcolor(WHITE);
outtextxy(30,35+tamanho_letra, "2: Funcao 2");
setfillstyle(1,0);
bar(0,38+(2*tamanho_letra),getmaxx(),42+(3*tamanho_letra));
setcolor(WHITE);
outtextxy(30,40+(2*tamanho_letra), "3: Sair");
//entrada = getche();
//if(entrada == 'ENTER')
//{funcao1();}
}
else if(ch == '2') // se ch for igual a 2, a opção 2 é selecionada e as demais ficam normais
{
setfillstyle(1,0);
bar(0,28,getmaxx(),32+tamanho_letra);
setcolor(WHITE);
outtextxy(30,30, "1: Funcao 1");
setfillstyle(1,10);
bar(0,33+tamanho_letra,getmaxx(),37+(2*tamanho_letra));
setcolor(BLACK);
outtextxy(30,35+tamanho_letra, "2: Funcao 2");
setfillstyle(1,0);
bar(0,38+(2*tamanho_letra),getmaxx(),42+(3*tamanho_letra));
setcolor(WHITE);
outtextxy(30,40+(2*tamanho_letra), "3: Sair");
//entrada = getche();
//if(entrada == 'ENTER') // Isso está errado, é aqui que gostaria de fazer a detecção do ENTER
//{funcao2();}
}
else if(ch == '3') // se ch for igual a 3, a opção 3 é selecionada e as demais ficam normais
{
setfillstyle(1,0);
bar(0,28,getmaxx(),32+tamanho_letra);
setcolor(WHITE);
outtextxy(30,30, "1: Funcao 1");
setfillstyle(1,0);
bar(0,33+tamanho_letra,getmaxx(),37+(2*tamanho_letra));
setcolor(WHITE);
outtextxy(30,35+tamanho_letra, "2: Funcao 2");
setfillstyle(1,10);
bar(0,38+(2*tamanho_letra),getmaxx(),42+(3*tamanho_letra));
setcolor(BLACK);
outtextxy(30,40+(2*tamanho_letra), "3: Sair");
//entrada = getche();
//if(entrada == 'ENTER')
//{sair();}
getch();
closegraph();
}
}
}
Ele detecta quando o usuário digita os numeros: 1, 2 e 3. Mas como posso fazer a detecção do enter para acessar as funções?
Pensei na tabela ASCII como solução, mas não entendi como utiliza-la.
Pergunta
Guest --Leonardo --
Ola a todos! Tenho um trabalho de fazer menu gráfico, mas surgiu um obstáculo e espero que me ajudem a resolve-lo.
Uso Borland C++ 5.02 e fiz o senguinte código:
Ele detecta quando o usuário digita os numeros: 1, 2 e 3. Mas como posso fazer a detecção do enter para acessar as funções?
Pensei na tabela ASCII como solução, mas não entendi como utiliza-la.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
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.