Закрытие консольного окна только при взаимодействии с ним
Написал простой таймер на С++ и столкнулся с тем, что когда я не взаимодействую с консолью, но при этом нажимаю определенные клавиши на клавиатуре, консоль выполняет команды. В частности, если программа запущена, я ее сверну и буду пользоваться другой программой, то при нажатии ESC у меня выполняется выход в моем таймере. Как сделать так, чтобы моя программа реагировала на клавиши клавиатуры только, если я ей пользуюсь?
#include <windows.h>
#include <WinUser.h>
#include <iostream>
#include <locale.h>
using namespace std;
int menu()
{
system("cls");
cout << "Добрый день! Добро пожаловать в приложение Timer\n";
cout << "Пожалуйста, нажмите ENTER, чтобы начать отсчет\n";
cout << "Если хотите выйти, то нажмите ESC\n";
while (1)
{
if (GetAsyncKeyState(VK_RETURN)) return 1;
if (GetAsyncKeyState(VK_ESCAPE)) return 0;
}
}
int timer()
{
system("cls");
int s = 0;
int m = 0;
cout << "Если хотите выйти, то зажмите ESC\n";
while (m!=25)
{
if (GetAsyncKeyState(VK_ESCAPE)) return 3;
Sleep(1000);
s++;
if (s%60==0 && s != 0)
{
m++;
s = 0;
}
cout << m << " Минут " << s << " Секунд\r";
}
cout << '\a';
return 2;
}
int Break()
{
system("cls");
cout << "Уже прошло 25 минут! Отдохните 5 минут и возвращайтесь к работе :)\n";
int s = 0;
int m = 0;
cout << "Если хотите выйти, то нажмите ESC\n";
while (m != 5)
{
if (GetAsyncKeyState(VK_ESCAPE)) return 3;
Sleep(1000);
s++;
if (s % 60 == 0 && s != 0)
{
m++;
s = 0;
}
cout << m << " Минут " << s << " Секунд\r";
}
cout << '\a';
return 1;
}
int main()
{
system("color 02");
system("mode con cols=80 lines=10");
setlocale(LC_ALL, "RUSSIAN");
int a = 3;
tryA:
if (a == 1)
{
a=timer();
goto tryA;
}
if (a == 2)
{
a=Break();
goto tryA;
}
if (a == 3)
{
a = menu();
goto tryA;
}
return 0;
}