Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / как научить приложение работать с горячими клавишами? / 2 сообщений из 2, страница 1 из 1
30.08.2004, 22:57
    #32672322
как научить приложение работать с горячими клавишами?
Проще говоря как сделать так, чтобы при нажатии Ctl+Enter нажималась кнопка Button1 (срабатывало событие OnClick кнопки).
...
Рейтинг: 0 / 0
31.08.2004, 07:38
    #32672413
Siebentearbeit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как научить приложение работать с горячими клавишами?
Смотря под чем... Обычно хватает указать в имени символ "&" типа "Bu&tton1"
и тогда при выполнении будет Bu t ton1 и кнопка нажмётся если нажать <Alt>-t.

В общем случае: хоткей - это вообще окно такое...
И чтобы забабахать хоткей надо это окно создать.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  //msdn 
    hwndHot = CreateWindowEx( 
         0 ,                              // no extended styles  
        HOTKEY_CLASS,                   // class name  
        "",                             // no title (caption)  
        WS_CHILD | WS_VISIBLE,          // style  
         10 ,  10 ,                         // position  
         200 ,  20 ,                        // size  
        hwndDlg,                        // parent window  
        NULL,                           // uses class menu  
        g_hinst,                        // instance  
        NULL                            // no WM_CREATE parameter  
        ); 

Причём родитель ему указывается как раз то окно, которое будет этот хоткей ловить.

Далее надо сказать окну хоткея, какую именно комбинацию кнопок нам надо поймать.

Код: plaintext
1.
2.
3.
4.
     // msdn 
     // Set CTRL + ALT + A as the default hot key for this window.  
     // 0x41 is the virtual key code for 'A'.  
    SendMessage(hwndHot, HKM_SETHOTKEY, 
        MAKEWORD(0x41, HOTKEYF_CONTROL | HOTKEYF_ALT),  0 ); 

Всё. После этих приседаний в системе появится(ещё одно) окно типа HotKeyCatcher (если я ничё не путаю) и как тока оно поймает эту комбинацию, оно пошлёт своему родителю соощение:
WM_HOTKEY

Правда тут таятся некие обломы, типа приоритетов. То что в виндах хоткей - не получится сделать в приложении(ну на самом деле получится, просто надо делать по-другому(я вот себе забабахал горячую кнопку Win, причём одну на нажатие, вторую на отжатие)).

Или вот ещё вариант: использовать функцию RegisterHotKey - она сама делает все верхние приседания.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / как научить приложение работать с горячими клавишами? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]