#if !TARGET_HOST_WINCE
{
- RECT rect;
+ RECT winRect;
+ int x, y, w, h;
/*
* For windowed mode, get the current position of the
* decorations into account.
*/
- GetWindowRect( window->Window.Handle, &rect );
- rect.right = rect.left + width;
- rect.bottom = rect.top + height;
+ /* "GetWindowRect" returns the pixel coordinates of the outside of the window */
+ GetWindowRect( window->Window.Handle, &winRect );
+ x = winRect.left;
+ y = winRect.top;
+ w = width;
+ h = height;
if ( window->Parent == NULL )
{
if ( ! window->IsMenu && !window->State.IsGameMode )
{
- rect.right += GetSystemMetrics( SM_CXSIZEFRAME ) * 2;
- rect.bottom += GetSystemMetrics( SM_CYSIZEFRAME ) * 2 +
- GetSystemMetrics( SM_CYCAPTION );
+ w += GetSystemMetrics( SM_CXSIZEFRAME ) * 2;
+ h += GetSystemMetrics( SM_CYSIZEFRAME ) * 2 +
+ GetSystemMetrics( SM_CYCAPTION );
}
}
else
{
- GetWindowRect( window->Parent->Window.Handle, &rect );
- AdjustWindowRect ( &rect, WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS |
- WS_CLIPCHILDREN, FALSE );
+ RECT parentRect;
+ GetWindowRect( window->Parent->Window.Handle, &parentRect );
+ x -= parentRect.left + GetSystemMetrics( SM_CXSIZEFRAME ) * 2;
+ y -= parentRect.top + GetSystemMetrics( SM_CYSIZEFRAME ) * 2 +
+ GetSystemMetrics( SM_CYCAPTION );
}
/*
SetWindowPos( window->Window.Handle,
HWND_TOP,
- rect.left,
- rect.top,
- rect.right - rect.left,
- rect.bottom - rect.top,
+ x, y, w, h,
SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSENDCHANGING |
SWP_NOZORDER
);
* it is possible to have our socket drained but still have
* unprocessed events. (Or, this may just be normal with
* X, anyway?) We do non-trivial processing of X events
- * after tham in event-reading loop, in any case, so we
+ * after the event-reading loop, in any case, so we
* need to allow that we may have an empty socket but non-
* empty event queue.
*/
SFG_Window* window;
XEvent event;
- /*
- * This code was repeated constantly, so here it goes into a definition:
- */
+ /* This code was repeated constantly, so here it goes into a definition: */
#define GETWINDOW(a) \
window = fgWindowByHandle( event.a.window ); \
if( window == NULL ) \
switch( event.type )
{
case ClientMessage:
- /*
- * Destroy the window when the WM_DELETE_WINDOW message arrives
- */
+ /* Destroy the window when the WM_DELETE_WINDOW message arrives */
if( (Atom) event.xclient.data.l[ 0 ] == fgDisplay.DeleteWindow )
{
GETWINDOW( xclient );
break;
}
- /*
- * No active menu, let's check whether we need to activate one.
- */
+ /* No active menu, let's check whether we need to activate one. */
if( ( 0 <= button ) &&
( FREEGLUT_MAX_MENUS > button ) &&
( window->Menu[ button ] ) &&
pressed )
{
- /*
- * XXX Posting a requisite Redisplay seems bogus.
- */
+ /* XXX Posting a requisite Redisplay seems bogus. */
window->State.Redisplay = GL_TRUE;
fgSetWindow( window );
fgActivateMenu( window, button );
);
}
- /*
- * Trash the modifiers state
- */
+ /* Trash the modifiers state */
fgState.Modifiers = 0xffffffff;
}
break;
switch( uMsg )
{
case WM_CREATE:
- /*
- * The window structure is passed as the creation structure paramter...
- */
+ /* The window structure is passed as the creation structure paramter... */
window = (SFG_Window *) (((LPCREATESTRUCT) lParam)->lpCreateParams);
assert( window != NULL );
break;
#if 0
case WM_SETFOCUS:
- /* printf("WM_SETFOCUS: %p\n", window ); */
+/* printf("WM_SETFOCUS: %p\n", window ); */
lRet = DefWindowProc( hWnd, uMsg, wParam, lParam );
break;
if (LOWORD(wParam) != WA_INACTIVE)
{
/* glutSetCursor( fgStructure.Window->State.Cursor ); */
- /* printf("WM_ACTIVATE: glutSetCursor( %p, %d)\n", window,
+/* printf("WM_ACTIVATE: glutSetCursor( %p, %d)\n", window,
window->State.Cursor ); */
glutSetCursor( window->State.Cursor );
}