27 #define WIN32_LEAN_AND_MEAN
31 #define COMPILE_MULTIMON_STUBS
40 numDisplays = ::GetSystemMetrics(SM_CMONITORS);
44 static BOOL
get_dd(DWORD d, DISPLAY_DEVICE *dd)
46 dd->cb =
sizeof(DISPLAY_DEVICE);
47 return ::EnumDisplayDevices(
NULL, d, dd, 0);
60 DISPLAY_DEVICE display_device;
61 if (!
get_dd(display, &display_device))
66 while (::EnumDisplaySettings(display_device.DeviceName, numSettings, &dm)) {
76 DISPLAY_DEVICE display_device;
77 if (!
get_dd(display, &display_device))
82 if (::EnumDisplaySettings(display_device.DeviceName, index, &dm)) {
83 #ifdef WITH_GHOST_DEBUG
84 printf(
"display mode: width=%d, height=%d, bpp=%d, frequency=%d\n",
88 dm.dmDisplayFrequency);
90 setting.
xPixels = dm.dmPelsWidth;
91 setting.
yPixels = dm.dmPelsHeight;
92 setting.
bpp = dm.dmBitsPerPel;
104 setting.
frequency = dm.dmDisplayFrequency;
122 DISPLAY_DEVICE display_device;
123 if (!
get_dd(display, &display_device))
130 while (::EnumDisplaySettings(display_device.DeviceName, i++, &dm)) {
131 if ((dm.dmBitsPerPel == match.
bpp) && (dm.dmPelsWidth == match.
xPixels) &&
132 (dm.dmPelsHeight == match.
yPixels) && (dm.dmDisplayFrequency == match.
frequency)) {
145 #ifdef WITH_GHOST_DEBUG
146 printf(
"display change: Requested settings:\n");
147 printf(
" dmBitsPerPel=%d\n", dm.dmBitsPerPel);
148 printf(
" dmPelsWidth=%d\n", dm.dmPelsWidth);
149 printf(
" dmPelsHeight=%d\n", dm.dmPelsHeight);
150 printf(
" dmDisplayFrequency=%d\n", dm.dmDisplayFrequency);
153 LONG status = ::ChangeDisplaySettings(&dm, CDS_FULLSCREEN);
154 #ifdef WITH_GHOST_DEBUG
156 case DISP_CHANGE_SUCCESSFUL:
157 printf(
"display change: The settings change was successful.\n");
159 case DISP_CHANGE_RESTART:
161 "display change: The computer must be restarted in order for the graphics mode to "
164 case DISP_CHANGE_BADFLAGS:
165 printf(
"display change: An invalid set of flags was passed in.\n");
167 case DISP_CHANGE_BADPARAM:
169 "display change: An invalid parameter was passed in. "
170 "This can include an invalid flag or combination of flags.\n");
172 case DISP_CHANGE_FAILED:
173 printf(
"display change: The display driver failed the specified graphics mode.\n");
175 case DISP_CHANGE_BADMODE:
176 printf(
"display change: The graphics mode is not supported.\n");
178 case DISP_CHANGE_NOTUPDATED:
179 printf(
"display change: Windows NT: Unable to write settings to the registry.\n");
182 printf(
"display change: Return value invalid\n");
static BOOL get_dd(DWORD d, DISPLAY_DEVICE *dd)
unsigned char GHOST_TUns8
GHOST_TSuccess setCurrentDisplaySetting(GHOST_TUns8 display, const GHOST_DisplaySetting &setting)
GHOST_TSuccess getNumDisplays(GHOST_TUns8 &numDisplays) const
GHOST_DisplayManagerWin32(void)
GHOST_TSuccess getDisplaySetting(GHOST_TUns8 display, GHOST_TInt32 index, GHOST_DisplaySetting &setting) const
GHOST_TSuccess getNumDisplaySettings(GHOST_TUns8 display, GHOST_TInt32 &numSettings) const
GHOST_TSuccess getCurrentDisplaySetting(GHOST_TUns8 display, GHOST_DisplaySetting &setting) const
GHOST_TSuccess findMatch(GHOST_TUns8 display, const GHOST_DisplaySetting &setting, GHOST_DisplaySetting &match) const