case WM_MOUSEMOVE:
{
+ /* Per docs, use LOWORD/HIWORD for WinCE and GET_X_LPARAM/GET_Y_LPARAM for desktop windows */
#if defined(_WIN32_WCE)
- window->State.MouseX = 320-HIWORD( lParam );
+ window->State.MouseX = 320-HIWORD( lParam ); /* XXX: Docs say x should be loword and y hiword? */
window->State.MouseY = LOWORD( lParam );
#else
- window->State.MouseX = LOWORD( lParam );
- window->State.MouseY = HIWORD( lParam );
+ window->State.MouseX = GET_X_LPARAM( lParam );
+ window->State.MouseY = GET_Y_LPARAM( lParam );
#endif /* defined(_WIN32_WCE) */
/* Restrict to [-32768, 32767] to match X11 behaviour */
/* See comment in "freeglut_developer" mailing list 10/4/04 */
GLboolean pressed = GL_TRUE;
int button;
+ /* Per docs, use LOWORD/HIWORD for WinCE and GET_X_LPARAM/GET_Y_LPARAM for desktop windows */
#if defined(_WIN32_WCE)
- window->State.MouseX = 320-HIWORD( lParam );
+ window->State.MouseX = 320-HIWORD( lParam ); /* XXX: Docs say x should be loword and y hiword? */
window->State.MouseY = LOWORD( lParam );
#else
- window->State.MouseX = LOWORD( lParam );
- window->State.MouseY = HIWORD( lParam );
+ window->State.MouseX = GET_X_LPARAM( lParam );
+ window->State.MouseY = GET_Y_LPARAM( lParam );
#endif /* defined(_WIN32_WCE) */
/* Restrict to [-32768, 32767] to match X11 behaviour */
case WM_MOUSEWHEEL:
{
- SFG_Window *child_window = NULL;
int wheel_number = 0; /* Only one scroll wheel on windows */
- /* int GET_KEYSTATE_WPARAM( wParam ); */
+#if defined(_WIN32_WCE)
+ int modkeys = LOWORD(wParam);
+ short ticks = (short)HIWORD(wParam);
+ /* commented out as should not be needed here, mouse motion is processed in WM_MOUSEMOVE first:
+ xPos = LOWORD(lParam); -- straight from docs, not consistent with mouse nutton and mouse motion above (which i think is wrong)
+ yPos = HIWORD(lParam);
+ */
+#else
+ /* int modkeys = GET_KEYSTATE_WPARAM( wParam ); */
short ticks = GET_WHEEL_DELTA_WPARAM( wParam );
+ /* commented out as should not be needed here, mouse motion is processed in WM_MOUSEMOVE first:
+ window->State.MouseX = GET_X_LPARAM( lParam );
+ window->State.MouseY = GET_Y_LPARAM( lParam );
+ */
+#endif /* defined(_WIN32_WCE) */
window = fghWindowUnderCursor(window);
}
}
-
/* Computes position of corners of window Rect (outer position including
* decorations) based on the provided client rect and based on the style
* of the window in question.
fghComputeWindowRectFromClientArea_UseStyle(clientRect, windowStyle, windowExStyle, posIsOutside);
}
-
/* Gets the rect describing the client area (drawable area) of the
* specified window. Output is position of corners of client area (drawable area) on the screen.
* Does not touch clientRect if window pointer or window handle is NULL.
void fghGetClientArea( RECT *clientRect, const SFG_Window *window )
{
POINT topLeftClient = {0,0};
- POINT topLeftWindow = {0,0};
freeglut_return_if_fail((window && window->Window.Handle));
OffsetRect(clientRect,topLeftClient.x,topLeftClient.y);
}
+
#if(WINVER >= 0x500)
typedef struct
{