Applied patch [ 758687 ] RegisterHotkey implemented

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21842 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2003-07-10 09:16:00 +00:00
parent fda7962d02
commit 5048c832bb
10 changed files with 164 additions and 1 deletions

View File

@@ -2549,6 +2549,12 @@ long wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam
}
break;
#if wxUSE_HOTKEY
case WM_HOTKEY:
processed = HandleHotKey((WORD)wParam, lParam);
break;
#endif
case WM_HSCROLL:
case WM_VSCROLL:
{
@@ -5093,6 +5099,9 @@ const char *wxGetMessageName(int message)
case 0x030F: return "WM_QUERYNEWPALETTE";
case 0x0310: return "WM_PALETTEISCHANGING";
case 0x0311: return "WM_PALETTECHANGED";
#if wxUSE_HOTKEY
case 0x0312: return "WM_HOTKEY";
#endif
// common controls messages - although they're not strictly speaking
// standard, it's nice to decode them nevertheless
@@ -5411,3 +5420,50 @@ wxPoint wxGetMousePosition()
return wxPoint(pt.x, pt.y);
}
#if wxUSE_HOTKEY
bool wxWindowMSW::RegisterHotKey(int hotkeyId, int modifiers, int virtualKeyCode)
{
UINT win_modifiers=0;
if (modifiers & wxMOD_ALT)
win_modifiers|=MOD_ALT;
if (modifiers & wxMOD_SHIFT)
win_modifiers|=MOD_SHIFT;
if (modifiers & wxMOD_CONTROL)
win_modifiers|=MOD_CONTROL;
if (modifiers & wxMOD_WIN)
win_modifiers|=MOD_WIN;
return ::RegisterHotKey(GetHwnd(), hotkeyId, win_modifiers, virtualKeyCode)!=FALSE;
}
bool wxWindowMSW::UnregisterHotKey(int hotkeyId)
{
return ::UnregisterHotKey(GetHwnd(), hotkeyId)!=FALSE;
}
bool wxWindowMSW::HandleHotKey(WXWPARAM wParam, WXLPARAM lParam)
{
int hotkeyId=wParam;
int virtualKey=HIWORD(lParam);
int win_modifiers=LOWORD(lParam);
/*
wxHotkeyModifier modifiers=wxMOD_NONE;
if (win_modifiers & MOD_ALT)
modifiers|=wxMOD_ALT;
if (win_modifiers & MOD_SHIFT)
modifiers|=wxMOD_SHIFT;
if (win_modifiers & MOD_CONTROL)
modifiers|=wxMOD_CONTROL;
if (win_modifiers & MOD_WIN)
modifiers|=wxMOD_WIN;
*/
wxKeyEvent event(CreateKeyEvent(wxEVT_HOTKEY, virtualKey, wParam, lParam));
event.SetId(hotkeyId);
event.m_shiftDown = (win_modifiers & MOD_SHIFT) != 0;
event.m_controlDown = (win_modifiers & MOD_CONTROL) != 0;
event.m_altDown = (win_modifiers & MOD_ALT) != 0;
event.m_metaDown = (win_modifiers & MOD_WIN) != 0;
return GetEventHandler()->ProcessEvent(event);
}
#endif