/*
- * freeglut_window_mswin.c
+ * fg_window_mswin.c
*
* The Windows-specific mouse cursor related stuff.
*
PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB;
/* If nothing fancy has been required, leave the context as it is */
- if ( fghIsLegacyContextRequested() )
+ if ( fghIsLegacyContextRequested(window) )
{
return;
}
ppfd->cDepthBits = 24;
ppfd->cStencilBits = 8;
- ppfd->cAuxBuffers = fghNumberOfAuxBuffersRequested();
+ ppfd->cAuxBuffers = (BYTE) fghNumberOfAuxBuffersRequested();
ppfd->iLayerType = layer_type;
ppfd->bReserved = 0;
ppfd->dwLayerMask = 0;
ppfd->dwVisibleMask = 0;
ppfd->dwDamageMask = 0;
-
+
ppfd->cColorBits = (BYTE) GetDeviceCaps( hdc, BITSPIXEL );
}
/* windows hack for multismapling/sRGB */
if ( ( fgState.DisplayMode & GLUT_MULTISAMPLE ) ||
( fgState.DisplayMode & GLUT_SRGB ) )
- {
+ {
HGLRC rc, rc_before=wglGetCurrentContext();
HWND hWnd;
HDC hDC, hDC_before=wglGetCurrentDC();
windowRect.left = clientRect->left;
windowRect.top = clientRect->top;
}
-
+
/* done, copy windowRect to output */
CopyRect(clientRect,&windowRect);
}
POINT topLeftClient = {0,0};
freeglut_return_if_fail((window && window->Window.Handle));
-
+
/* Get size of client rect */
GetClientRect(window->Window.Handle, clientRect);
if (posIsOutside)
} m_proc_t;
static BOOL CALLBACK m_proc(HMONITOR mon,
- HDC hdc,
- LPRECT rect,
- LPARAM data)
+ HDC hdc,
+ LPRECT rect,
+ LPARAM data)
{
m_proc_t *dp=(m_proc_t *)data;
MONITORINFOEX info;
return TRUE;
}
-/*
+/*
* this function returns the origin of the screen identified by
* fgDisplay.pDisplay.DisplayName, and 0 otherwise.
* This is used in fgOpenWindow to open the gamemode window on the screen
WNDCLASS wc;
DWORD flags = 0;
DWORD exFlags = 0;
- ATOM atom;
+ BOOL atom;
/* Grab the window class we have registered on glutInit(): */
atom = GetClassInfo( fgDisplay.pDisplay.Instance, _T("FREEGLUT"), &wc );
}
if( !sizeUse )
{
- if( !window->IsMenu )
- {
- w = CW_USEDEFAULT;
- h = CW_USEDEFAULT;
- }
- else /* fail safe - Windows can make a window of size (0, 0) */
- w = h = 300; /* default window size */
+ w = CW_USEDEFAULT;
+ h = CW_USEDEFAULT;
}
-
-#if !defined(_WIN32_WCE) /* no decorations for windows CE */
- if( sizeUse )
+#if !defined(_WIN32_WCE) /* no decorations for windows CE, so nothing to do */
+ else
{
RECT windowRect;
/*
/* Enable multitouch: additional flag TWF_FINETOUCH, TWF_WANTPALM */
#ifdef WM_TOUCH
- if (fghRegisterTouchWindow == (pRegisterTouchWindow)0xDEADBEEF)
- fghRegisterTouchWindow = (pRegisterTouchWindow)GetProcAddress(GetModuleHandle("user32"),"RegisterTouchWindow");
- if (fghRegisterTouchWindow)
+ if (fghRegisterTouchWindow == (pRegisterTouchWindow)0xDEADBEEF)
+ fghRegisterTouchWindow = (pRegisterTouchWindow)GetProcAddress(GetModuleHandle("user32"),"RegisterTouchWindow");
+ if (fghRegisterTouchWindow)
fghRegisterTouchWindow( window->Window.Handle, TWF_FINETOUCH | TWF_WANTPALM );
#endif
#if defined(_WIN32_WCE)
ShowWindow( window->Window.Handle, SW_SHOW );
#else
+ if (!window->IsMenu) /* Don't show window after creation if its a menu */
{
- BOOL iconic = fgState.ForceIconic && !window->IsMenu && !gameMode && !isSubWindow;
+ BOOL iconic = fgState.ForceIconic && !gameMode && !isSubWindow;
ShowWindow( window->Window.Handle,
iconic ? SW_SHOWMINIMIZED : SW_SHOWNORMAL );
}
free(window->State.pWState.IconTitle);
}
+/*
+ * Hide's specified window. For windows, currently only used
+ * to immediately hide menu windows...
+ */
+void fgPlatformHideWindow( SFG_Window* window )
+{
+ ShowWindow(window->Window.Handle, SW_HIDE);
+}
+
/*
* Set the current window's title