Título: Mejorar el código en C++ nativo Publicado por: Meta en 7 Julio 2020, 15:05 pm Buenas:
Tengo este código en C++ nativo, en el cual aún no logro que funcione tal como lo quiero. Lo que hace este código es, que si pulsas la letra A o a, se abre la bandeja del lector del disco, si pulsas C o c se cierra. Código C++ nativo: Código
En el código de C# si funciona tal como lo quiero, pongo un ejemplo abajo. Código C#: Código
Lo que hace el código C# exactamente todos estos comportamientos. 1. Te pregunta si pulsas teclas, por ejemplo la A para abrir la bandeja y C para cerrar, independientemente si es mayúscula o no. Funciona todo. 2. Desde que pulse cualquier letra del teclado que non corresponda la A, a, C y la c, el programa no hace nada, como debe ser. 3. Si quiero abrir la bandeja del lector y pulso la tecla A, desde que pulse la tecla, se abre la bandeja. 4. Desde que pulse la tecla A, dice el mensaje "Abriendo...", cuando esté abierto la bandeja del todo, dice "Abierto.". Lo que hace el código C++ nativo y no quiero. 1. Pulso la tecla A o la a, y aparece escrito en la consola. 2. Luego tengo que pulsar la tecla Enter para que la letra A o la a, funcione el comando. Entonces ya puede abrir la bandeja y mostrar los mensajes Abriendo... y Aabierto. La pregunta es. ¿Se puede corregir este comportamiento de C++ nativo que sea igual al ejemplo de C#? Saludos. Título: Re: Mejorar el código en C++ nativo Publicado por: ThunderCls en 7 Julio 2020, 17:13 pm No creo que exista una manera estandar en C++ para lograr lo que deseas, sin embargo puedes usar un par de opciones:
1- Usando la funcion "getch()" de la libreria NO estandar "conio.h" (getch() espera una entrada del teclado pero no la muestra en la consola) 2- Usando la API de Windows para modificar el comportamiento de la consola: Código
Para leer y escribir: Código
3- Usando GetAsyncKeyState(...) en un loop 4- Usando un hook de teclado con GetConsoleWindow(...)/SetWindowsHookEx(...) Saludos Título: Re: Mejorar el código en C++ nativo Publicado por: Meta en 8 Julio 2020, 02:40 am Buenas:
Por lo que entiendo. cambiar esto: Código Por esto otro: Código
En la línea 58 aparecen estos dos errores. Gravedad Código Descripción Proyecto Archivo Línea Origen Estado suprimido Error (activo) E0137 la expresión debe ser un valor L modificable Bandeja_consola_nativo_cpp C:\Users\Meta\Documents\Visual Studio 2019\Projects\Bandeja_consola_nativo_cpp\Bandeja_consola_nativo_cpp\Bandeja_consola_nativo_cpp.cpp 58 IntelliSense Gravedad Código Descripción Proyecto Archivo Línea Origen Estado suprimido Error C3863 el tipo de matriz 'char [2]' no es asignable Bandeja_consola_nativo_cpp C:\Users\Meta\Documents\Visual Studio 2019\Projects\Bandeja_consola_nativo_cpp\Bandeja_consola_nativo_cpp\Bandeja_consola_nativo_cpp.cpp 58 Compilación Título: Re: Mejorar el código en C++ nativo Publicado por: ThunderCls en 8 Julio 2020, 04:42 am No lo tomes a mal, pero en mi opinion creo que necesitas esforzarte un poco mas en buscar respuestas por ti mismo a problemas sencillos con los que te encuentras, intentar entenderlos te ayudara a avanzar y obtener experiencia, no puedes pretender que todo te lo den hecho o que cada vez que tengas un minimo error recurrir al foro. En fin, como dije al principio, no lo tomes a mal, pero necesitas aprender a usar Google e intentar entender por ti mismo lo que te sucede.
Habiendo dicho lo anterior, si buscas el prototipo de la funcion getch() te daras cuenta de como usarla correctamente: Código
La funcion no toma parametros y devuelve un int que equivale al valor de la tecla presionada. En tu codigo intentas usar la variable "entrada" que esta definida como un arreglo de chars, por lo que evidentemente tendras ese error. Visual Studio te advierte de esta operacion "el tipo de matriz 'char [2]' no es asignable". El modo correcto de uso seria: Código
Saludos |