dmScreenSettings.dmSize = sizeof(dmScreenSettings); // DEVMODE结构的大小
dmScreenSettings.dmPelsWidth = 640; // 所选屏幕宽度
dmScreenSettings.dmPelsHeight = 480; // 所选屏幕高度
dmScreenSettings.dmBitsPerPel = m_BitsPerPixel; // 每象素所选的色彩深度
dmScreenSettings.dmFields = DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
// 尝试设置显示模式并返回结果,注:CDS_FULLSCREEN 移去了状态条
if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
{
// 若模式失败,提供两个选项:退出或在窗口内运行
if (MessageBox(NULL,"全屏模式在当前显卡上设置失败!/n使用窗口模式?",window_title,MB_YESNO | MB_ICONEXCLAMATION) == IDYES)
{
//如果用户选择窗口模式,变量fullscreen 的值变为FALSE,程序继续运行
fullscreen = FALSE;
}
else
{
//如果用户选择退出,弹出消息窗口告知用户程序将结束。并返回FALSE告诉程序窗口未能成功创建。程序退出
MessageBox(NULL,"程序将被关闭","错误",MB_OK | MB_ICONSTOP);
return FALSE; // 退出并返回 FALSE
}
}
}
当dmScreenSettings变量dmPelsWidth、dmPelsHeight为常规Windows分辨率(比如值为645、490)时,函数将调用失败,返回DISP_CHANGE_BADMODE。故可以固定这两个变量的值为常规值。