fix generation of wxEVT_CHAR_HOOK events [backport of r59700 from trunk]
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@59701 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -95,6 +95,11 @@ All (GUI):
|
||||
|
||||
- Add wxBU_EXACTFIT support to wxToggleButton XRC handler (Ronny Krueger).
|
||||
|
||||
wxMSW:
|
||||
|
||||
- Fixed generation of wxEVT_CHAR_HOOK events.
|
||||
|
||||
|
||||
2.8.10:
|
||||
-------
|
||||
|
||||
|
@@ -6131,28 +6131,8 @@ extern wxWindow *wxGetWindowFromHWND(WXHWND hWnd)
|
||||
// Windows keyboard hook. Allows interception of e.g. F1, ESCAPE
|
||||
// in active frames and dialogs, regardless of where the focus is.
|
||||
static HHOOK wxTheKeyboardHook = 0;
|
||||
static FARPROC wxTheKeyboardHookProc = 0;
|
||||
int APIENTRY _EXPORT
|
||||
wxKeyboardHook(int nCode, WORD wParam, DWORD lParam);
|
||||
|
||||
void wxSetKeyboardHook(bool doIt)
|
||||
{
|
||||
if ( doIt )
|
||||
{
|
||||
wxTheKeyboardHookProc = MakeProcInstance((FARPROC) wxKeyboardHook, wxGetInstance());
|
||||
wxTheKeyboardHook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC) wxTheKeyboardHookProc, wxGetInstance(),
|
||||
|
||||
GetCurrentThreadId()
|
||||
// (DWORD)GetCurrentProcess()); // This is another possibility. Which is right?
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
UnhookWindowsHookEx(wxTheKeyboardHook);
|
||||
}
|
||||
}
|
||||
|
||||
int APIENTRY _EXPORT
|
||||
int APIENTRY
|
||||
wxKeyboardHook(int nCode, WORD wParam, DWORD lParam)
|
||||
{
|
||||
DWORD hiWord = HIWORD(lParam);
|
||||
@@ -6196,6 +6176,29 @@ wxKeyboardHook(int nCode, WORD wParam, DWORD lParam)
|
||||
return (int)CallNextHookEx(wxTheKeyboardHook, nCode, wParam, lParam);
|
||||
}
|
||||
|
||||
void wxSetKeyboardHook(bool doIt)
|
||||
{
|
||||
if ( doIt )
|
||||
{
|
||||
wxTheKeyboardHook = ::SetWindowsHookEx
|
||||
(
|
||||
WH_KEYBOARD,
|
||||
(HOOKPROC)wxKeyboardHook,
|
||||
NULL, // must be NULL for process hook
|
||||
::GetCurrentThreadId()
|
||||
);
|
||||
if ( !wxTheKeyboardHook )
|
||||
{
|
||||
wxLogLastError(_T("SetWindowsHookEx(wxKeyboardHook)"));
|
||||
}
|
||||
}
|
||||
else // uninstall
|
||||
{
|
||||
if ( wxTheKeyboardHook )
|
||||
::UnhookWindowsHookEx(wxTheKeyboardHook);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // !__WXMICROWIN__
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
|
Reference in New Issue
Block a user