Вот пример:
Код:
int COpenGL_Win::change_video_mode ()
{
DEVMODE dmScreenSettings;
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm_old);
yes_change_video_mode = 0;
memset(&dmScreenSettings,0,sizeof(dmScreenSettings));
dmScreenSettings.dmSize = sizeof(dmScreenSettings);
dmScreenSettings.dmPelsWidth = os.width;
dmScreenSettings.dmPelsHeight = os.height;
dmScreenSettings.dmBitsPerPel = os.color_bits;
dmScreenSettings.dmDisplayFrequency = os.frequency;
dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH |
DM_PELSHEIGHT | DM_DISPLAYFREQUENCY;
if (ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
return return_error(IS_ERROR,"%s","change_video_mode -> ChangeDisplaySettings");
Sleep(100);
yes_change_video_mode = 1;
return IS_OK;
}
Вот пример перечисления всех режимов:
Код:
/* wglQueryDisplayModes
*
* Query display modes
*
*/
static GLvoid wglQueryDisplayModes(DEVMODE **ppmode, GLint *pNumModes)
{
GLint n = 0;
DEVMODE devmode;
devmode.dmSize = sizeof(DEVMODE);
while (EnumDisplaySettings(NULL, n, &devmode))
n++;
if (pNumModes)
*pNumModes = n;
/* fill an array with all the devmodes so we don't have to keep
grabbing 'em. */
if (ppmode)
{
DEVMODE * p = (DEVMODE*)malloc(sizeof(DEVMODE) * (n + 1));
n = 0;
p[n].dmSize = sizeof(DEVMODE);
while (EnumDisplaySettings(NULL, n, p + n))
{
n++;
p[n].dmSize = sizeof(DEVMODE);
}
*ppmode = p;
}
return;
}