Escapar de un Ciclo con GetAsyncKeyState

Iniciado por snoopty, 13 Septiembre 2021, 09:51 AM

0 Miembros y 1 Visitante están viendo este tema.

snoopty

Hola a todos ! En este Código no logro que al apretar la Tecla " F1 " éste finalice e imprima la línea  [ cout<<"PROGRAMA TERMINADO"<<endl; ]
Intenté " la forma sin & 0x8000" pero - -aunque ninguna de las dos formas de GetAsyncKeyState al Compilar me arrojaba Error -- tampoco lo logré.  Cada vez que oprimo F1 o bien me repetía el anterior Número ingresado, o bien se generaba como un Overflow con Pantalla Azul ( con Contador de 0 a 100 ) o se quedaba tildada la PC.
Luego de que me ocurrió ese Overflow " me desapareció el Dev-C++ EMBARCADERO " ;
((aunque no es la primera vez que me ocurre)) LUEGO, como alternativa sigo con Dev-C++ 5.11 o bien vuelvo a instalar EMBARCADERO
   
#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
int a;
int b;
int c;


while (!(GetAsyncKeyState(VK_F1) & 0x8000))
{

cout<<"Ingrese a"<<endl;
cin>>a;

cout<<"Ingrese b"<<endl;
cin>>b;

c=(a+b);

cout<<"LA SUMA ES  :"<<c<<endl;  

}
   
cout<<"PROGRAMA TERMINADO"<<endl;    
return 0;
}
   
/* Gracias por leer el Post */


MAFUS

Usa etiquetas GeSHi para poner tu código, lo encontrarás como desplegable en la barra de botones del post.

Respondiendo a tu mensaje cambia ese 0x8000 por un 1.
El 0x8000 lo que hace es mirar si la tecla se está pulsando durante la llamada a la función, el 1 informa si desde la anterior llamada a la función se ha pulsado la tecla, es decir, informa si la tecla en algún momento ha sido pulsada. Creo que ese es el comportamiento que estás buscando.

Aquí está la información al completo de cómo funciona: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getasynckeystate

snoopty

Gracias ! SI me podrías explicar un poco lo de Etiquetas Geshin para dar formato para emprolijar el código como vos decís, también te lo agradecería.
Saludos !

MAFUS

Si cuando vas a escribir un nuevo post o una respuesta miras la barra de herramientas que hay justo encima del cuando de entrada, hay una lista desplegable que dice Código GeSHi. En ella hay muchos lenguajes. Debes elegir con el que vas a escribir el trozo de código.

Automáticamente aparecerá un par de etiquetas en el cuadro de escritura entre corchetes con code=lenguaje y /code. Entre las dos etiquetas escribes tu código.