handling of mouse messages more conform docs, some cleanup
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1548 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
parent
bf4a53a72e
commit
76f9c9a902
@ -681,12 +681,13 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
|
||||
|
||||
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 */
|
||||
@ -724,12 +725,13 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
|
||||
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 */
|
||||
@ -832,10 +834,22 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
|
||||
|
||||
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);
|
||||
|
||||
|
@ -406,7 +406,6 @@ void fghGetStyleFromWindow( const SFG_Window *window, DWORD *windowStyle, DWORD
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* 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.
|
||||
@ -455,7 +454,6 @@ void fghComputeWindowRectFromClientArea_QueryWindow( RECT *clientRect, const SFG
|
||||
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.
|
||||
@ -464,7 +462,6 @@ void fghComputeWindowRectFromClientArea_QueryWindow( RECT *clientRect, const SFG
|
||||
void fghGetClientArea( RECT *clientRect, const SFG_Window *window )
|
||||
{
|
||||
POINT topLeftClient = {0,0};
|
||||
POINT topLeftWindow = {0,0};
|
||||
|
||||
freeglut_return_if_fail((window && window->Window.Handle));
|
||||
|
||||
@ -476,6 +473,7 @@ void fghGetClientArea( RECT *clientRect, const SFG_Window *window )
|
||||
OffsetRect(clientRect,topLeftClient.x,topLeftClient.y);
|
||||
}
|
||||
|
||||
|
||||
#if(WINVER >= 0x500)
|
||||
typedef struct
|
||||
{
|
||||
|
Reference in New Issue
Block a user