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:
|
case WM_MOUSEMOVE:
|
||||||
{
|
{
|
||||||
|
/* Per docs, use LOWORD/HIWORD for WinCE and GET_X_LPARAM/GET_Y_LPARAM for desktop windows */
|
||||||
#if defined(_WIN32_WCE)
|
#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 );
|
window->State.MouseY = LOWORD( lParam );
|
||||||
#else
|
#else
|
||||||
window->State.MouseX = LOWORD( lParam );
|
window->State.MouseX = GET_X_LPARAM( lParam );
|
||||||
window->State.MouseY = HIWORD( lParam );
|
window->State.MouseY = GET_Y_LPARAM( lParam );
|
||||||
#endif /* defined(_WIN32_WCE) */
|
#endif /* defined(_WIN32_WCE) */
|
||||||
/* Restrict to [-32768, 32767] to match X11 behaviour */
|
/* Restrict to [-32768, 32767] to match X11 behaviour */
|
||||||
/* See comment in "freeglut_developer" mailing list 10/4/04 */
|
/* 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;
|
GLboolean pressed = GL_TRUE;
|
||||||
int button;
|
int button;
|
||||||
|
|
||||||
|
/* Per docs, use LOWORD/HIWORD for WinCE and GET_X_LPARAM/GET_Y_LPARAM for desktop windows */
|
||||||
#if defined(_WIN32_WCE)
|
#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 );
|
window->State.MouseY = LOWORD( lParam );
|
||||||
#else
|
#else
|
||||||
window->State.MouseX = LOWORD( lParam );
|
window->State.MouseX = GET_X_LPARAM( lParam );
|
||||||
window->State.MouseY = HIWORD( lParam );
|
window->State.MouseY = GET_Y_LPARAM( lParam );
|
||||||
#endif /* defined(_WIN32_WCE) */
|
#endif /* defined(_WIN32_WCE) */
|
||||||
|
|
||||||
/* Restrict to [-32768, 32767] to match X11 behaviour */
|
/* 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:
|
case WM_MOUSEWHEEL:
|
||||||
{
|
{
|
||||||
SFG_Window *child_window = NULL;
|
|
||||||
int wheel_number = 0; /* Only one scroll wheel on windows */
|
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 );
|
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);
|
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
|
/* Computes position of corners of window Rect (outer position including
|
||||||
* decorations) based on the provided client rect and based on the style
|
* decorations) based on the provided client rect and based on the style
|
||||||
* of the window in question.
|
* of the window in question.
|
||||||
@ -455,7 +454,6 @@ void fghComputeWindowRectFromClientArea_QueryWindow( RECT *clientRect, const SFG
|
|||||||
fghComputeWindowRectFromClientArea_UseStyle(clientRect, windowStyle, windowExStyle, posIsOutside);
|
fghComputeWindowRectFromClientArea_UseStyle(clientRect, windowStyle, windowExStyle, posIsOutside);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Gets the rect describing the client area (drawable area) of the
|
/* 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.
|
* 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.
|
* 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 )
|
void fghGetClientArea( RECT *clientRect, const SFG_Window *window )
|
||||||
{
|
{
|
||||||
POINT topLeftClient = {0,0};
|
POINT topLeftClient = {0,0};
|
||||||
POINT topLeftWindow = {0,0};
|
|
||||||
|
|
||||||
freeglut_return_if_fail((window && window->Window.Handle));
|
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);
|
OffsetRect(clientRect,topLeftClient.x,topLeftClient.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if(WINVER >= 0x500)
|
#if(WINVER >= 0x500)
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user