From 845cff4d72a67b191713785873059449a563c7ef Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Wed, 21 May 2003 18:43:03 +0000 Subject: [PATCH] Applied patch [ 740012 ] GetKeyState returns 16-Bit value on WindowsNT git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@20683 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/msw/private.h | 10 ++++++++-- src/msw/window.cpp | 5 ++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/include/wx/msw/private.h b/include/wx/msw/private.h index 3c48d8c7b1..f0c71a455e 100644 --- a/include/wx/msw/private.h +++ b/include/wx/msw/private.h @@ -280,12 +280,18 @@ extern HBITMAP wxInvertMask(HBITMAP hbmpMask, int w = 0, int h = 0); // get the current state of SHIFT/CTRL keys inline bool wxIsShiftDown() { - return (::GetKeyState(VK_SHIFT) & 0x100) != 0; +// return (::GetKeyState(VK_SHIFT) & 0x100) != 0; + // Returns different negative values on WinME and WinNT, + // so simply test for negative value. + return ::GetKeyState(VK_SHIFT) < 0; } inline bool wxIsCtrlDown() { - return (::GetKeyState(VK_CONTROL) & 0x100) != 0; +// return (::GetKeyState(VK_CONTROL) & 0x100) != 0; + // Returns different negative values on WinME and WinNT, + // so simply test for negative value. + return ::GetKeyState(VK_CONTROL) < 0; } // wrapper around GetWindowRect() and GetClientRect() APIs doing error checking diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 5759320519..ea5cdb4f7f 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -4151,7 +4151,10 @@ void wxWindowMSW::InitMouseEvent(wxMouseEvent& event, event.m_leftDown = (flags & MK_LBUTTON) != 0; event.m_middleDown = (flags & MK_MBUTTON) != 0; event.m_rightDown = (flags & MK_RBUTTON) != 0; - event.m_altDown = (::GetKeyState(VK_MENU) & 0x80000000) != 0; +// event.m_altDown = (::GetKeyState(VK_MENU) & 0x80000000) != 0; + // Returns different negative values on WinME and WinNT, + // so simply test for negative value. + event.m_altDown = ::GetKeyState(VK_MENU) < 0; event.SetTimestamp(s_currentMsg.time); event.m_eventObject = this;