now have function to get window style based on FreeGLUT's stateflag
(fgState.DisplayMode) so that window decoration specification is only in one place in the code. Also, glutGet(GLUT_WINDOW_BORDER_WIDTH); and glutGet(GLUT_WINDOW_HEADER_HEIGHT); now return the right sizes, i.e., taking the display mode into account, for the border and caption when no window is created yet git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1396 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
parent
dec5717f1e
commit
610b006221
@ -185,7 +185,10 @@ void Redisplay(void)
|
|||||||
* when the window is on a monitor to the left of the primary monitor
|
* when the window is on a monitor to the left of the primary monitor
|
||||||
* or simply when maximized--try pressing the maximize button).
|
* or simply when maximized--try pressing the maximize button).
|
||||||
* the returned size is the size of the client area
|
* the returned size is the size of the client area
|
||||||
|
* Note that the top-left of a child window is relative to the
|
||||||
|
* top-left of the client area of the parent.
|
||||||
*/
|
*/
|
||||||
|
/* printf("window border: %dpx, caption: %dpx\n",border,caption); */
|
||||||
if (win==nWindow)
|
if (win==nWindow)
|
||||||
printf("main window %dx%d, top-left of client at: (%d,%d), of window at: (%d,%d)\n",
|
printf("main window %dx%d, top-left of client at: (%d,%d), of window at: (%d,%d)\n",
|
||||||
nWidth, nHeight,
|
nWidth, nHeight,
|
||||||
|
@ -371,6 +371,20 @@ void fgPlatformSetWindow ( SFG_Window *window )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void fghGetDefaultWindowStyle(DWORD *flags)
|
||||||
|
{
|
||||||
|
if ( fgState.DisplayMode & GLUT_BORDERLESS )
|
||||||
|
{
|
||||||
|
/* no window decorations needed, no-op */
|
||||||
|
}
|
||||||
|
else if ( fgState.DisplayMode & GLUT_CAPTIONLESS )
|
||||||
|
/* only window decoration is a border, no title bar or buttons */
|
||||||
|
(*flags) |= WS_DLGFRAME;
|
||||||
|
else
|
||||||
|
/* window decoration are a border, title bar and buttons. */
|
||||||
|
(*flags) |= WS_OVERLAPPEDWINDOW;
|
||||||
|
}
|
||||||
|
|
||||||
/* Get window style and extended window style of a FreeGLUT window
|
/* Get window style and extended window style of a FreeGLUT window
|
||||||
* If the window pointer or the window handle is NULL, a fully
|
* If the window pointer or the window handle is NULL, a fully
|
||||||
* decorated window (caption and border) is assumed.
|
* decorated window (caption and border) is assumed.
|
||||||
@ -384,8 +398,9 @@ void fghGetStyleFromWindow( const SFG_Window *window, DWORD *windowStyle, DWORD
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
*windowStyle = 0;
|
||||||
|
fghGetDefaultWindowStyle(windowStyle);
|
||||||
/* WindowExStyle==0 is fine/default, exStyle is currently only used for menu windows */
|
/* WindowExStyle==0 is fine/default, exStyle is currently only used for menu windows */
|
||||||
*windowStyle = WS_OVERLAPPEDWINDOW;
|
|
||||||
*windowExStyle = 0;
|
*windowExStyle = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -601,23 +616,9 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title,
|
|||||||
#if defined(_WIN32_WCE)
|
#if defined(_WIN32_WCE)
|
||||||
/* no decorations for windows CE */
|
/* no decorations for windows CE */
|
||||||
#else
|
#else
|
||||||
/* if this is not a subwindow (child), set its style based on the requested display mode */
|
/* if this is not a subwindow (child), set its style based on the requested window decorations */
|
||||||
else if( window->Parent == NULL )
|
else if( window->Parent == NULL )
|
||||||
if ( fgState.DisplayMode & GLUT_BORDERLESS )
|
fghGetDefaultWindowStyle(&flags);
|
||||||
{
|
|
||||||
/* no window decorations needed */
|
|
||||||
}
|
|
||||||
else if ( fgState.DisplayMode & GLUT_CAPTIONLESS )
|
|
||||||
/* only window decoration is a border, no title bar or buttons */
|
|
||||||
flags |= WS_DLGFRAME;
|
|
||||||
else
|
|
||||||
/* window decoration are a border, title bar and buttons.
|
|
||||||
* NB: we later query whether the window has a title bar or
|
|
||||||
* not by testing for the maximize button, as the test for
|
|
||||||
* WS_CAPTION can be true without the window having a title
|
|
||||||
* bar. This style WS_OVERLAPPEDWINDOW gives you a maximize
|
|
||||||
* button. */
|
|
||||||
flags |= WS_OVERLAPPEDWINDOW;
|
|
||||||
#endif
|
#endif
|
||||||
else
|
else
|
||||||
/* subwindows always have no decoration, but are marked as a child window to the OS */
|
/* subwindows always have no decoration, but are marked as a child window to the OS */
|
||||||
|
Reference in New Issue
Block a user