0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 2
1

Работа с горячими клавишами

26.11.2013, 18:47. Показов 1563. Ответов 2
Метки нет (Все метки)

Добрый день.
Есть такая проблема.я в приложении регистрирую горячие клавиши, по нажатию которых открываются окна/выполняются функции.
Вопрос - как отслеживать,что комбинация горячих клавиш была нажата и при повторном нажатии ничего не происходило до закрытия диалогового окна?

код регистрации горячей клавиши:
C++
1
RegisterHotKey(F_Main->Handle, 1, MOD_CONTROL | MOD_NOREPEAT, 'F');
код обработчика горячей клавиши:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TF_Main::WMHotKey(TWMHotKey &Message)
{
 
  switch (Message.HotKey)
  {
    
    case 1:
            if (условие){ //
                MessageBox(Handle, "сообщение", "title", MB_OK | MB_ICONERROR);
 
            }
            break;
    case 9:
            ShowMessage("Пасхальное Яйцо!\nEaster Egg!");
            break;
    default: return;
  }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2013, 18:47
Ответы с готовыми решениями:

Различить нажатие мышкой и вызов горячими клавишами
Доброго времени суток. Есть PopupMenu, на некоторые его кнопки назначены горячие клавиши. ...

как горячими клавишами открыть скрываемую программу
например в обработчике OnCloseQuery написал: CanClose=false; Form->Hide(); Программа скрылась...

Увеличение или уменьшение шрифта горячими клавишами в самой среде
Когда я работаю в builder мне нужно увеличить или уменьшить размер кода как это сделает "горячими...

Работа с дополнительными клавишами клавиатуры...
Есть у меня ноутбук. У него есть клавиши включения\отключения Bluetooth, Wi-Fi, энергосбережение....

2
случайный прохожий
1516 / 1018 / 374
Регистрация: 20.07.2013
Сообщений: 2,955
27.11.2013, 16:05 2
Перед открытием (диалогового) окна / окна сообщения вызываешь UnregisterHotKey для всех горящих клавиш, после закрытия регистрируешь клавиши снова.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void __fastcall TF_Main::WMHotKey(TWMHotKey &Message)
{
  switch (Message.HotKey)
  {
    case 1:
      if (условие)
      {  
        //
        UnregisterHotKey(F_Main->Handle, 1);        
        UnregisterHotKey(F_Main->Handle, 9);        
 
        MessageBox(Handle, "сообщение", "title", MB_OK | MB_ICONERROR);
 
        RegisterHotKey(F_Main->Handle, 1, MOD_CONTROL | MOD_NOREPEAT, 'F');
        RegisterHotKey(F_Main->Handle, 9, MOD_CONTROL | MOD_NOREPEAT, 'X');
      }
      break;
    case 9:
      UnregisterHotKey(F_Main->Handle, 1);        
      UnregisterHotKey(F_Main->Handle, 9);        
 
      ShowMessage("Пасхальное Яйцо!\nEaster Egg!");
 
      RegisterHotKey(F_Main->Handle, 1, MOD_CONTROL | MOD_NOREPEAT, 'F');
      RegisterHotKey(F_Main->Handle, 9, MOD_CONTROL | MOD_NOREPEAT, 'X');
 
      break;
    default: return;
  }
}
Можно регистрацию / "отмену регистрации" выделить в отдельные функции.
1
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 2
27.11.2013, 17:49  [ТС] 3
Спасибо большое за идею.я пробовал временно убирать регистрацию горячих клавиш,но почему-то этого мне не удавалось сделать. Сейчас проверил - работает

Тему можно считать закрытой
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2013, 17:49

Работа с горячими клавишами через WinAPI
Привет, делаю программу для автоматизации некоторых сообщений в игре. Делаю хоткей глобальным...

Проблема с горячими клавишами
При запуске нескольких экземпляров программы, функции горячих клавиш (Открытие блокнота, закрытие...

DLL с горячими клавишами
Привет всем. У меня есть программа, которая напоминает о событиях. При нажатие на некоторые...

Секундомер с тремя горячими клавишами
Здравствуйте. Задача: реализовать секундомер с тремя горячими клавишами Q - старт W - стоп E -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.