From f23255165efa522e247b308e759310e4c558089d Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Wed, 13 Apr 2005 15:32:41 +0000 Subject: [PATCH] GetCursorPos returns an error on WinCE, so use GetMessagePos instead. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33574 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/window.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 136e06c3c5..bea69a5f4c 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -218,6 +218,18 @@ static void EnsureParentHasControlParentStyle(wxWindow *parent) #endif // !__WXWINCE__ +#ifdef __WXWINCE__ +// On Windows CE, GetCursorPos can return an error, so use this function +// instead +bool GetCursorPosWinCE(POINT* pt) +{ + DWORD pos = GetMessagePos(); + pt->x = LOWORD(pos); + pt->y = HIWORD(pos); + return true; +} +#endif + // --------------------------------------------------------------------------- // event tables // --------------------------------------------------------------------------- @@ -757,7 +769,11 @@ bool wxWindowMSW::SetCursor(const wxCursor& cursor) // Change the cursor NOW if we're within the correct window POINT point; +#ifdef __WXWINCE__ + ::GetCursorPosWinCE(&point); +#else ::GetCursorPos(&point); +#endif RECT rect = wxGetWindowRect(hWnd); @@ -1235,7 +1251,11 @@ bool wxWindowMSW::IsMouseInWindow() const { // get the mouse position POINT pt; +#ifdef __WXWINCE__ + ::GetCursorPosWinCE(&pt); +#else ::GetCursorPos(&pt); +#endif // find the window which currently has the cursor and go up the window // chain until we find this window - or exhaust it @@ -3490,7 +3510,11 @@ bool wxWindowMSW::HandleSetCursor(WXHWND WXUNUSED(hWnd), // first ask the user code - it may wish to set the cursor in some very // specific way (for example, depending on the current position) POINT pt; +#ifdef __WXWINCE__ + if ( !::GetCursorPosWinCE(&pt) ) +#else if ( !::GetCursorPos(&pt) ) +#endif { wxLogLastError(wxT("GetCursorPos")); } @@ -4529,7 +4553,11 @@ void wxWindowMSW::GenerateMouseLeave() state |= MK_RBUTTON; POINT pt; +#ifdef __WXWINCE__ + if ( !::GetCursorPosWinCE(&pt) ) +#else if ( !::GetCursorPos(&pt) ) +#endif { wxLogLastError(_T("GetCursorPos")); } @@ -4576,7 +4604,11 @@ wxKeyEvent wxWindowMSW::CreateKeyEvent(wxEventType evType, // translate the position to client coords POINT pt; +#ifdef __WXWINCE__ + GetCursorPosWinCE(&pt); +#else GetCursorPos(&pt); +#endif RECT rect; GetWindowRect(GetHwnd(),&rect); pt.x -= rect.left; @@ -5797,7 +5829,11 @@ wxWindow* wxFindWindowAtPoint(const wxPoint& pt) wxPoint wxGetMousePosition() { POINT pt; +#ifdef __WXWINCE__ + GetCursorPosWinCE(&pt); +#else GetCursorPos( & pt ); +#endif return wxPoint(pt.x, pt.y); } -- 2.45.2