From 839b865d081f1410a8508b22f11a4f028d14daf9 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 27 Feb 1999 14:40:06 +0000 Subject: [PATCH] VK_APPS handling git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1817 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/window.cpp | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/msw/window.cpp b/src/msw/window.cpp index c85c6abeb4..750f5c7c53 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -1229,7 +1229,6 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) } case WM_KEYDOWN: - { // If this has been processed by an event handler, // return 0 now (we've handled it). if (MSWOnKeyDown((WORD) wParam, lParam)) @@ -1255,24 +1254,41 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) case VK_RIGHT: case VK_DOWN: case VK_UP: - { return Default(); + +#ifdef VK_APPS + // special case of VK_APPS: treat it the same as right mouse click + // because both usually pop up a context menu + case VK_APPS: + { + // construct the key mask + WPARAM fwKeys = MK_RBUTTON; + if ( (::GetKeyState(VK_CONTROL) & 0x100) != 0 ) + fwKeys |= MK_CONTROL; + if ( (::GetKeyState(VK_SHIFT) & 0x100) != 0 ) + fwKeys |= MK_SHIFT; + + // simulate right mouse button click + DWORD dwPos = ::GetMessagePos(); + int x = GET_X_LPARAM(dwPos), + y = GET_Y_LPARAM(dwPos); + + ScreenToClient(&x, &y); + MSWOnRButtonDown(x, y, fwKeys); + } break; - } +#endif // VK_APPS + default: if (!MSWOnChar((WORD)wParam, lParam)) { return Default(); } -/* - if ( ::GetKeyState(VK_CONTROL) & 0x100 ) - return Default(); -*/ break; } break; - } + case WM_KEYUP: { if (!MSWOnKeyUp((WORD) wParam, lParam)) -- 2.45.2