From 6fad3235de6bec045fec19a7265e19e880ac84e2 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 30 Jul 2017 17:30:39 +0300 Subject: Hotkeys: code cleaning --- include/delphi/m_helpers.inc | 2 +- include/delphi/m_hotkeys.inc | 57 +++-------------------- include/m_hotkeys.h | 107 ++++++++++++++++++------------------------- 3 files changed, 52 insertions(+), 114 deletions(-) (limited to 'include') diff --git a/include/delphi/m_helpers.inc b/include/delphi/m_helpers.inc index dd81e8e534..d5160da04c 100644 --- a/include/delphi/m_helpers.inc +++ b/include/delphi/m_helpers.inc @@ -333,7 +333,7 @@ end; function Hotkey_Register(hk:PHOTKEYDESC):int_ptr; begin - result:=CallService(MS_HOTKEY_REGISTER, hLangpack, LPARAM(hk)); + result:=_Hotkey_Register(hk, hLangpack); end; function Skin_AddIcon(si:PSKINICONDESC):THANDLE; diff --git a/include/delphi/m_hotkeys.inc b/include/delphi/m_hotkeys.inc index c1042bfabd..ba3450f33c 100644 --- a/include/delphi/m_hotkeys.inc +++ b/include/delphi/m_hotkeys.inc @@ -25,10 +25,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. const HKD_UNICODE = $0001; + HKF_MIRANDA_LOCAL = $8000; + type PHOTKEYDESC = ^THOTKEYDESC; THOTKEYDESC = record - cbSize :int; pszName :PAnsiChar; // name to refer to hotkey when playing and in db pszDescription:TChar; // description for options dialog pszSection :TChar; // section name used to group sounds (NULL is acceptable) @@ -38,60 +39,16 @@ type dwFlags :dword; // Miranda ver >=9.0 end; -const - HKF_MIRANDA_LOCAL = $8000; -{ use this macro to defile hotkey codes like this: - hkd.DefHotkey = HOTKEYCODE(HOTKEYF_SHIFT|HOTKEYF_EXT, 'A'); -} -// HOTKEYCODE(mod,vk) (MAKEWORD((vk),(mod))) - -{ CoreHotkeys/Register service -Registers new hotkey - wParam=(WPARAM)0 - lParam=(LPARAM)(HOTKEYDESC *)hotkey -Returns 0 on failure or hotkey atom id on success -} - MS_HOTKEY_REGISTER:PAnsiChar = 'CoreHotkeys/Register'; - -{ CoreHotkeys/Unregister service -Unregister existing hotkey - wParam=(WPARAM)0 - lParam=(LPARAM)(AnsiChar *)pszName -Returns 0 on success or nonzero otherwise -} - MS_HOTKEY_UNREGISTER:PAnsiChar = 'CoreHotkeys/Unregister'; - -{ CoreHotkeys/Check service -Checks if "manual" hotkey was activated and returns its id. - wParam=(WPARAM)(MSG *)message - lParam=(LPARAM)(AnsiChar *)pszSection -Returns lParam associated with activated hotkey -} - MS_HOTKEY_CHECK:PAnsiChar = 'CoreHotkeys/Check'; - -{ Subclass/unsubclass edit box to act as hotkey control - wParam=(WPARAM)(HWND)hwndEdit - lParam=(LPARAM)0 -Returns zero on success - -You will get notification with LOWORD(wParam) == 0 when users sets hotkey. - -Subclassed control processes HKM_SETHOTKEY and HKM_GETHOTKEY similarly to -windows' hotkey, in all other it acts just like normal editbox (beware of -standart notifications that occur on text updates!) - -Subclass procedure uses GWL_USERDATA to store internal information. Do not -use it for own purposes. -} - MS_HOTKEY_SUBCLASS :PAnsiChar = 'CoreHotkeys/Subclass'; - MS_HOTKEY_UNSUBCLASS:PAnsiChar = 'CoreHotkeys/Unsubclass'; +function _Hotkey_Register(hk:PHOTKEYDESC; _hLang:int): int; stdcall; external AppDll name 'Hotkey_Register'; +function Hotkey_Unregister(hk:PAnsiChar): int; stdcall; external AppDll; { - This event is fired when hotkeys were changed (Mirver 9.0+ ?) - wParam = lParam = 0 + This event is fired when hotkeys were changed (Mirver 9.0+ ?) + wParam = lParam = 0 } +const ME_HOTKEYS_CHANGED:PAnsiChar = 'CoreHotkeys/Changed'; {$ENDIF} diff --git a/include/m_hotkeys.h b/include/m_hotkeys.h index ce237cd877..6dabe8dfac 100644 --- a/include/m_hotkeys.h +++ b/include/m_hotkeys.h @@ -27,86 +27,67 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include -#define HKD_UNICODE 0x0001 +#define HKD_UNICODE 0x0001 +#define HKF_MIRANDA_LOCAL 0x8000 -typedef struct +struct HOTKEYDESC { - int cbSize; - const char *pszName; /* name to refer to hotkey when playing and in db */ - union { - const char *pszDescription; /* description for options dialog */ - const wchar_t *pwszDescription; - }; - union { - const char *pszSection; /* section name used to group sounds (NULL is acceptable) */ - const wchar_t *pwszSection; - }; - const char *pszService; /* Service to call when HotKey Pressed */ - WORD DefHotKey; /* default hot key for action */ - LPARAM lParam; /* lParam to pass to service */ + const char *pszName; // name to refer to hotkey when playing and in db + MAllStrings szDescription; // description for options dialog + MAllStrings szSection; // section name used to group sounds (NULL is acceptable) + const char *pszService; // Service to call when HotKey Pressed + WORD DefHotKey; // default hot key for action + LPARAM lParam; // lParam to pass to service DWORD dwFlags; -} HOTKEYDESC; - -#define HKF_MIRANDA_LOCAL 0x8000 +}; extern int hLangpack; -/* use this macro to defile hotkey codes like this: - hkd.DefHotkey = HOTKEYCODE(HOTKEYF_SHIFT|HOTKEYF_EXT, 'A'); -*/ -#define HOTKEYCODE(mod, vk) (MAKEWORD((vk), (mod))) +///////////////////////////////////////////////////////////////////////////////////////// +// use this macro to defile hotkey codes like this: +// hkd.DefHotkey = HOTKEYCODE(HOTKEYF_SHIFT|HOTKEYF_EXT, 'A'); -/* CoreHotkeys/Register service -Registers new hotkey - wParam = 0 - lParam = (LPARAM)(HOTKEYDESC *)hotkey -Returns 0 on failure or hotkey atom id on success -*/ +#define HOTKEYCODE(mod, vk) (MAKEWORD((vk), (mod))) -__forceinline INT_PTR Hotkey_Register(HOTKEYDESC *hk) -{ - return CallService("CoreHotkeys/Register", (WPARAM)hLangpack, (LPARAM)hk); -} - -/* CoreHotkeys/Unregister service -Unregister existing hotkey - wParam = 0 - lParam = (LPARAM)(char *)pszName -Returns 0 on success or nonzero otherwise -*/ -#define MS_HOTKEY_UNREGISTER "CoreHotkeys/Unregister" +///////////////////////////////////////////////////////////////////////////////////////// +// Registers new hotkey +// Returns 0 on failure or hotkey atom id on success -/* CoreHotkeys/Check service -Checks if "manual" hotkey was activated and returns its id. - wParam = (WPARAM)(MSG *)message - lParam = (LPARAM)(char *)pszSection -Returns lParam associated with activated hotkey -*/ -#define MS_HOTKEY_CHECK "CoreHotkeys/Check" +EXTERN_C MIR_APP_DLL(int) Hotkey_Register(const HOTKEYDESC *hk, int = hLangpack); -/* Subclass/unsubclass edit box to act as hotkey control - wParam = (WPARAM)(HWND)hwndEdit - lParam = 0 -Returns zero on success +///////////////////////////////////////////////////////////////////////////////////////// +// Unregister existing hotkey -You will get notification with LOWORD(wParam) == 0 when users sets hotkey. +EXTERN_C MIR_APP_DLL(int) Hotkey_Unregister(const char *pszName); -Subclassed control processes HKM_SETHOTKEY and HKM_GETHOTKEY similarly to -windows' hotkey, in all other it acts just like normal editbox (beware of -standart notifications that occur on text updates!) +///////////////////////////////////////////////////////////////////////////////////////// +// Checks if "manual" hotkey was activated and returns its id. +// Returns lParam associated with activated hotkey -Subclass procedure uses GWLP_USERDATA to store internal information. Do not -use it for own purposes. -*/ -#define MS_HOTKEY_SUBCLASS "CoreHotkeys/Subclass" -#define MS_HOTKEY_UNSUBCLASS "CoreHotkeys/Unsubclass" +EXTERN_C MIR_APP_DLL(int) Hotkey_Check(MSG *pEvent, const char *pszSection); -/* This event is fired when hotkeys were changed - wParam = lParam = 0 -*/ +///////////////////////////////////////////////////////////////////////////////////////// +// Subclasss/unsubclass edit box to act as hotkey control +// You will get notification with LOWORD(wParam) == 0 when users sets hotkey. +// +// Subclassed control processes HKM_SETHOTKEY and HKM_GETHOTKEY similarly to +// windows' hotkey, in all other it acts just like normal editbox (beware of +// standart notifications that occur on text updates!) +// +// Subclass procedure uses GWLP_USERDATA to store internal information. Do not +// use it for own purposes. + +EXTERN_C MIR_APP_DLL(void) Hotkey_Subclass(HWND hwndEdit); +EXTERN_C MIR_APP_DLL(void) Hotkey_Unsubclass(HWND hwndEdit); + +///////////////////////////////////////////////////////////////////////////////////////// +// This event is fired when hotkeys were changed +// wParam = lParam = 0 #define ME_HOTKEYS_CHANGED "CoreHotkeys/Changed" +///////////////////////////////////////////////////////////////////////////////////////// + EXTERN_C MIR_APP_DLL(void) KillModuleHotkeys(int hLangpack); #endif // M_HOTKEYS_H__ -- cgit v1.2.3