1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // HotKey.cpp: implementation of the CHotKey class.
- //
- //////////////////////////////////////////////////////////////////////
- #include "gen_hotkeys.h"
- #include "HotKey.h"
- //////////////////////////////////////////////////////////////////////
- // Registration / Unregstration
- //////////////////////////////////////////////////////////////////////
- int RegisterHotkey(HOTKEY *hk)
- {
- if (!hk) return 1;
- wchar_t atomName[1024] = {0};
- bool unicode = 0;
- char* name = GetCommandName(hk->hkd.iCommand, &unicode);
- StringCchPrintfW(atomName, 1024, (unicode?L"%s %X %X %X":L"%hs %X %X %X"), name, hk->hkd.dwHotKey, hk->hkd.iCommand, GetTickCount());
- hk->atom = GlobalAddAtomW(atomName);
- if (!hk->atom)
- return 1;
- return !RegisterHotKey(psPlugin.hwndParent, hk->atom, GetModKeys(hk->hkd.dwHotKey), LOBYTE(hk->hkd.dwHotKey));
- }
- void UnregisterHotkey(HOTKEY *hk)
- {
- if (!hk || !hk->atom)
- return;
- UnregisterHotKey(psPlugin.hwndParent, hk->atom);
- GlobalDeleteAtom(hk->atom);
- hk->atom = NULL;
- }
- //////////////////////////////////////////////////////////////////////
- // Set / Get
- //////////////////////////////////////////////////////////////////////
- UINT GetModKeys(DWORD dwHotKey)
- {
- UINT result = 0;
- WORD wHotKey = HIBYTE(dwHotKey);
- if (wHotKey & HOTKEYF_ALT)
- result |= MOD_ALT;
- if (wHotKey & HOTKEYF_CONTROL)
- result |= MOD_CONTROL;
- if (wHotKey & HOTKEYF_WIN)
- result |= MOD_WIN;
- if (wHotKey & HOTKEYF_SHIFT)
- result |= MOD_SHIFT;
- return result;
- }
|