Автор | Сообщение |
|
| |
Пост N: 193
Зарегистрирован: 03.12.08
|
|
Отправлено: 17.11.14 13:01. Заголовок: Как отловить ON KEY глобально по всей программе ?
Подскажите команду чтоб отлавливать ON KEY по всей программе . Нужно чтоб отрабатывалось нажатие независимо от того в каком окне сейчас фокус ...
|
|
|
Ответов - 4
[только новые]
|
|
|
| |
Пост N: 4272
Зарегистрирован: 17.05.05
|
|
Отправлено: 17.11.14 13:06. Заголовок: Про Set key речь или..
Про Set key речь или я что то не понял ?
|
|
|
|
| moderator
|
Пост N: 687
Зарегистрирован: 11.02.10
|
|
Отправлено: 17.11.14 13:27. Заголовок: Softlog86 пишет: Ну..
Softlog86 пишет: цитата: | Нужно чтоб отрабатывалось нажатие независимо от того в каком окне сейчас фокус |
| Команду пробовал Кстати, она есть в примерах из поставки Минигуи Дополнение. См. рабочий пример ниже Скрытый текст
/* * Harbour MiniGUI Demo */ #include "minigui.ch" #define WM_HOTKEY 786 STATIC bHotKey, cForm Function Main SET GLOBAL HOTKEYS ON SET EVENTS FUNCTION TO MYEVENTS DEFINE WINDOW Win_1 ; AT 0,0 ; WIDTH 400 ; HEIGHT 400 ; TITLE 'Hello World!' ; MAIN ; ON GOTFOCUS cForm := This.Name @ 010,005 BUTTONEX BTNOK ; CAPTION "Click" ; ACTION m1() ; WIDTH 100 HEIGHT 30 bHotKey := {|| MsgInfo( cForm ) } ** ** ON KEY ALT+1 ACTION bHotKey ** ** END WINDOW ACTIVATE WINDOW Win_1 Return Nil ** ** ** FUNCTION m1() DEFINE WINDOW Win_2 ; AT 50,50 ; WIDTH 400 ; HEIGHT 400 ; TITLE " Win_2 " ; MODAL ; ON GOTFOCUS cForm := This.Name SetDummyKey() @ 010,005 BUTTONEX BTNOK ; CAPTION "Click" ; ACTION m2() ; WIDTH 100 HEIGHT 30 END WINDOW *** Ativa janela ACTIVATE WINDOW Win_2 ** ** ** FUNCTION m2() DEFINE WINDOW Win_3 ; AT 100,100 ; WIDTH 400 ; HEIGHT 400 ; TITLE " Win_3 " ; MODAL ; ON GOTFOCUS cForm := This.Name SetDummyKey() @ 010,005 BUTTONEX BTNOK ; CAPTION "Click" ; ACTION Win_3.RELEASE ; WIDTH 100 HEIGHT 30 END WINDOW *** Ativa janela ACTIVATE WINDOW Win_3 FUNCTION SetDummyKey() ON KEY ALT+1 ACTION _dummy() *--------------------------------------------------------* FUNCTION MyEvents ( hWnd, nMsg, wParam, lParam ) *--------------------------------------------------------* LOCAL result := 0 SWITCH nMsg CASE WM_HOTKEY * Process HotKeys i := ASCAN( _HMG_aControlIds, wParam ) IF i > 0 IF _HMG_aControlType[ i ] == 'HOTKEY' Eval( bHotKey ) ENDIF ENDIF EXIT #ifdef __XHARBOUR__ DEFAULT #else OTHERWISE #endif result := Events( hWnd, nMsg, wParam, lParam ) END RETURN result
|
|
|
|
|
| |
Пост N: 195
Зарегистрирован: 03.12.08
|
|
Отправлено: 18.11.14 14:14. Заголовок: Спасибо за наводку !..
Спасибо за наводку ! Но тут есть проблема . Как только ставлю SET GLOBAL HOTKEYS ON - программа забирает на себя все HOTKEYS . Другие приложения (в фокусе) не реагируют на нажатия .... Независимо от того в фокусе моя Harbour программа или нет ....
|
|
|
|
| moderator
|
Пост N: 688
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.11.14 15:19. Заголовок: Softlog86 пишет: Ка..
Softlog86 пишет: цитата: | Как только ставлю SET GLOBAL HOTKEYS ON - программа забирает на себя все HOTKEYS |
| Все правильно - на то и команда GLOBAL HOTKEYS. Но можно обойтись и без этой команды Попробуйте приведенный выше пример без нее - все работает
|
|
|
|