-\r
-#elif TARGET_HOST_MS_WINDOWS\r
-\r
- DEVMODE devMode;\r
- char *fggmstr = NULL;\r
- char displayMode[300];\r
-\r
- success = GL_FALSE;\r
-\r
- EnumDisplaySettings( fgDisplay.DisplayName, -1, &devMode ); \r
- devMode.dmFields = 0;\r
-\r
- if (fgState.GameModeSize.X!=-1)\r
- {\r
- devMode.dmPelsWidth = fgState.GameModeSize.X;\r
- devMode.dmFields |= DM_PELSWIDTH;\r
- }\r
- if (fgState.GameModeSize.Y!=-1)\r
- {\r
- devMode.dmPelsHeight = fgState.GameModeSize.Y;\r
- devMode.dmFields |= DM_PELSHEIGHT;\r
- }\r
- if (fgState.GameModeDepth!=-1)\r
- {\r
- devMode.dmBitsPerPel = fgState.GameModeDepth;\r
- devMode.dmFields |= DM_BITSPERPEL;\r
- }\r
- if (fgState.GameModeRefresh!=-1)\r
- {\r
- devMode.dmDisplayFrequency = fgState.GameModeRefresh;\r
- devMode.dmFields |= DM_DISPLAYFREQUENCY;\r
- }\r
-\r
- switch ( ChangeDisplaySettingsEx(fgDisplay.DisplayName, &devMode, NULL, haveToTest ? CDS_TEST : CDS_FULLSCREEN , NULL) )\r
- {\r
- case DISP_CHANGE_SUCCESSFUL:\r
- success = GL_TRUE;\r
-\r
- if (!haveToTest)\r
- {\r
- /* update vars in case if windows switched to proper mode */\r
- EnumDisplaySettings( fgDisplay.DisplayName, FREEGLUT_ENUM_CURRENT_SETTINGS, &devMode );\r
- fgState.GameModeSize.X = devMode.dmPelsWidth; \r
- fgState.GameModeSize.Y = devMode.dmPelsHeight;\r
- fgState.GameModeDepth = devMode.dmBitsPerPel;\r
- fgState.GameModeRefresh = devMode.dmDisplayFrequency;\r
- }\r
- break;\r
- case DISP_CHANGE_RESTART:\r
- fggmstr = "The computer must be restarted for the graphics mode to work.";\r
- break;\r
- case DISP_CHANGE_BADFLAGS:\r
- fggmstr = "An invalid set of flags was passed in.";\r
- break;\r
- case DISP_CHANGE_BADPARAM:\r
- fggmstr = "An invalid parameter was passed in. This can include an invalid flag or combination of flags.";\r
- break;\r
- case DISP_CHANGE_FAILED:\r
- fggmstr = "The display driver failed the specified graphics mode.";\r
- break;\r
- case DISP_CHANGE_BADMODE:\r
- fggmstr = "The graphics mode is not supported.";\r
- break;\r
- default:\r
- fggmstr = "Unknown error in graphics mode???"; /* dunno if it is possible,MSDN does not mention any other error */\r
- break;\r
- }\r
-\r
- if ( !success )\r
- {\r
- /* I'd rather get info whats going on in my program than wonder about */\r
- /* magic happenings behind my back, its lib for devels at last ;) */\r
- \r
- /* append display mode to error to make things more informative */\r
- sprintf(displayMode,"%s Problem with requested mode: %ix%i:%i@%i", fggmstr, devMode.dmPelsWidth, devMode.dmPelsHeight, devMode.dmBitsPerPel, devMode.dmDisplayFrequency);\r
- fgWarning(displayMode);\r
- }\r
-#endif\r
-\r