106 DISPLAY_DEVICE display_device;
107 if (!
get_dd(display, &display_device)) {
115 while (::EnumDisplaySettings(display_device.DeviceName, i++, &dm)) {
116 if ((dm.dmBitsPerPel == match.
bpp) && (dm.dmPelsWidth == match.
xPixels) &&
117 (dm.dmPelsHeight == match.
yPixels) && (dm.dmDisplayFrequency == match.
frequency))
123 dm.dmBitsPerPel = match.
bpp;
124 dm.dmPelsWidth = match.
xPixels;
125 dm.dmPelsHeight = match.
yPixels;
127 dm.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY;
128 dm.dmSize =
sizeof(DEVMODE);
129 dm.dmDriverExtra = 0;
132#ifdef WITH_GHOST_DEBUG
133 printf(
"display change: Requested settings:\n");
134 printf(
" dmBitsPerPel=%d\n", dm.dmBitsPerPel);
135 printf(
" dmPelsWidth=%d\n", dm.dmPelsWidth);
136 printf(
" dmPelsHeight=%d\n", dm.dmPelsHeight);
137 printf(
" dmDisplayFrequency=%d\n", dm.dmDisplayFrequency);
140 LONG status = ::ChangeDisplaySettings(&dm, CDS_FULLSCREEN);
141#ifdef WITH_GHOST_DEBUG
143 case DISP_CHANGE_SUCCESSFUL:
144 printf(
"display change: The settings change was successful.\n");
146 case DISP_CHANGE_RESTART:
148 "display change: The computer must be restarted in order for the graphics mode to "
151 case DISP_CHANGE_BADFLAGS:
152 printf(
"display change: An invalid set of flags was passed in.\n");
154 case DISP_CHANGE_BADPARAM:
156 "display change: An invalid parameter was passed in. "
157 "This can include an invalid flag or combination of flags.\n");
159 case DISP_CHANGE_FAILED:
160 printf(
"display change: The display driver failed the specified graphics mode.\n");
162 case DISP_CHANGE_BADMODE:
163 printf(
"display change: The graphics mode is not supported.\n");
165 case DISP_CHANGE_NOTUPDATED:
166 printf(
"display change: Windows NT: Unable to write settings to the registry.\n");
169 printf(
"display change: Return value invalid\n");