]> git.saurik.com Git - wxWidgets.git/commitdiff
VK_APPS handling
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 27 Feb 1999 14:40:06 +0000 (14:40 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 27 Feb 1999 14:40:06 +0000 (14:40 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1817 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/window.cpp

index c85c6abeb4a763c70f8816a786b38338d3e77ef5..750f5c7c53093f0e67eab2e59cb7348ce9ad7cab 100644 (file)
@@ -1229,7 +1229,6 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
         }
 
     case WM_KEYDOWN:
         }
 
     case WM_KEYDOWN:
-    {
         // If this has been processed by an event handler,
         // return 0 now (we've handled it).
         if (MSWOnKeyDown((WORD) wParam, lParam))
         // 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:
             case VK_RIGHT:
             case VK_DOWN:
             case VK_UP:
-            {
                 return Default();
                 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;
                 break;
-            }
+#endif // VK_APPS
+
             default:
                 if (!MSWOnChar((WORD)wParam, lParam))
                 {
                     return Default();
                 }
             default:
                 if (!MSWOnChar((WORD)wParam, lParam))
                 {
                     return Default();
                 }
-/*
-                if ( ::GetKeyState(VK_CONTROL) & 0x100 )
-                    return Default();
-*/
                 break;
         }
 
         break;
                 break;
         }
 
         break;
-    }
+
     case WM_KEYUP:
     {
         if (!MSWOnKeyUp((WORD) wParam, lParam))
     case WM_KEYUP:
     {
         if (!MSWOnKeyUp((WORD) wParam, lParam))