if (fullscreen) // 全屏模式 { DEVMODE dmScreenSettings; // 设备模式 memset(&dmScreenSettings,0,sizeof(dmScreenSettings)); // 确保内存清空为零 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。故可以固定这两个变量的值为常规值。