Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: pedro0620 en 3 Septiembre 2016, 04:28 am



Título: Ayuda para utilizar las teclas F1 F2 F3 etc. Dev C++
Publicado por: pedro0620 en 3 Septiembre 2016, 04:28 am
Estoy haciendo un menu donde el usuario eliga el nombre del archivo y pueda ingresar datos en el... El problema que me surgio es que tengo que utilizar las teclas de funcion para elegir las opciones:

F1 - Crear archivo
F2 - Ingresar datos
ESC - Salir

Ya tengo todo lo demas lo unico que ocupo es saber como utilizar esas teclas. Tengo entendido que con switch no se puede que es con puros if... O si se puede con switch?

Este es el codigo:

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <windows.h>
using namespace std;

FILE *archivoF;
char nombre[50];
char texto=' ';

void crear()
{
   cout<<"Ingrese el nombre del archivo: ";
    cin>>nombre;   
    strcat(nombre,".txt");                   /*Utilize la funcion strcat para concatenar el nombre que el usuario
                                              quiera darle al archivo con la extensión .txt porque en C
                                        no existe el operador concatenación (+) */     
    system("pause>null");

}

void escribir()
{
   archivoF=fopen(nombre,"w");
   if(archivoF==NULL)
   {
      
      cout<<"Error en la apertura";
      
   }
   
   cout<<"Ingrese el texto: (presione enter para finalizar): "<<endl;
   
   do
   {
      texto=getche();
      fputc(texto,archivoF);
      
   }while(texto!=13);
   
   fclose(archivoF);
}

void mostrar()
{
   
}

int main()
{
   int x;
   
      cout<<endl<<endl<<"\t\t\t Menu"<<endl<<endl;
           cout<<"\t[F1].-  Crear archivo. "<<endl;
           cout<<"\t[F2].-  Ingresar datos "<<endl;
           cout<<"\t[F3].-  Mostrar archivo "<<endl;
           cout<<"\t ESC.-  Salir "<<endl;
           cout<<"\tOpcion: ";
           cout<<endl;
           x=getch();
      
}
(http://)

Si me pudieran ayudar se los agradeceria muchooo!


Título: Re: Ayuda para utilizar las teclas F1 F2 F3 etc. Dev C++
Publicado por: AlbertoBSD en 3 Septiembre 2016, 04:38 am
NO USES CONIO.H

Para usar estas teclas hay que ver cuales son sus códigos hace años que las utilice pero no recuerdo sus codigos. Lo que si recuerdo es que cuando precionas estas teclas manda 2 valores el primero es 0 y el segundo el valor de la tecla en cuestión.

Te propongo esto:
Código
  1. x=getchar();
  2. switch(x){
  3. case 0://Teclas especiales... leer otra vez el valor
  4. x=getchar();
  5. printf("El valor de la tecla es %i",x);
  6. break;
  7. default://Otras teclas.
  8. break;
  9. }

Saludos


Título: Re: Ayuda para utilizar las teclas F1 F2 F3 etc. Dev C++
Publicado por: bengy en 3 Septiembre 2016, 05:40 am
porque no usar conio.h?


Título: Re: Ayuda para utilizar las teclas F1 F2 F3 etc. Dev C++
Publicado por: AlbertoBSD en 3 Septiembre 2016, 07:32 am
  • No es estándar
  • Solo sirve en Turbo C

En todo el código solo sirve para la funcion getch.

Por que no usar mejor getchar que si es estándar y se encuentra en stdio.h

Creo que el usuario tiene un pesimo maestro de programacion, en fin que se le puede hacer?


Repito NO USEN CONIO.H


Saludos?


Título: Re: Ayuda para utilizar las teclas F1 F2 F3 etc. Dev C++
Publicado por: bengy en 3 Septiembre 2016, 07:40 am
ok saludos y muchas gracias por la aclaracion


Título: Re: Ayuda para utilizar las teclas F1 F2 F3 etc. Dev C++
Publicado por: AlbertoBSD en 5 Septiembre 2016, 16:34 pm
Hola acabo de validar el siguiente codigo y no funciona, YA QUE EL CMD de WINDOWS procesa algunas Teclas Especiales FX y no las pasa al programa en ejecucion.

Código
  1. #include<stdio.h>
  2.  
  3. int main() {
  4. char x;
  5. x = getchar();
  6. switch(x){
  7. case 0: //Teclas especiales... leer otra vez el valor
  8. x = getchar();
  9. printf("El valor de la tecla es %i",x);
  10. break;
  11. default: //Otras teclas.
  12. break;
  13. }
  14. }

Posiblemente funcione con getch y en Turbo C o algun otro entorno de 16 bits (NETA!?!?!?!) pero en windows 10 no funciono.

Saludos!