KirillHelm
@KirillHelm

Как остановить вычисления в событии ShortCut?

Короче говоря, решил сделать простенькую консоль для программы. Упакована она в GroupBox. Прячется и отображается командами hide и show соответственно. Проблема заключается в том, что я оба события привязал в клавише "тильда". Есть булевая переменная для определения состояния консоли (отображается = true и спрятана = false). Знаю, что можно было сделать проще, но это просто надстройка (как оказалось не эффективная), т.к. более простой код тоже выдавал неприемлемый результат.

Итак, суть проблемы:
При нажатии кнопки '~', консоль отображается и сразу же прячется, её невозможно "поймать" открытой или корректно закрыть. Пробовал прервать процесс с помощью break (но его почему-то юзать нельзя), а просто return не помогает.

Ниже прилагаю код и сразу же прошу прощения за тупой вопрос, только учу c++, второй курс вот только закончил...

void __fastcall TForm1::FormShortCut(TWMKey &Msg, bool &Handled)
{
if (Msg.CharCode == 0xC0) { // Клавиша тильды для вызова консоли
	if (console_mod == true) {
		Gbox5->Hide();
		console_mod = false;
	}
	if (console_mod == false) {
		Gbox5->Show();
		console_mod = true;
	}
  }
}
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
1. Handled=true, кажется 2 раза выполнится без этого, не уверен.
2.

if (console_mod == true) {
console_mod = false;
}
if (console_mod == false)
{
//в любом случае окажемся здесь ?????????????
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы