3 #include "display_private.h"
10 Display::Display(const string &):
13 for(unsigned i=0;; ++i)
16 if(!EnumDisplaySettings(0, i, &info))
19 VideoMode mode(info.dmPelsWidth, info.dmPelsHeight);
20 mode.rate = info.dmDisplayFrequency;
21 modes.push_back(mode);
25 if(EnumDisplaySettings(0, ENUM_CURRENT_SETTINGS, &info))
27 orig_mode = VideoMode(info.dmPelsWidth, info.dmPelsHeight);
28 orig_mode.rate = info.dmDisplayFrequency;
36 void Display::set_mode(const VideoMode &mode)
39 info.dmSize = sizeof(DEVMODE);
40 info.dmFields = DM_PELSWIDTH|DM_PELSHEIGHT;
41 info.dmPelsWidth = mode.width;
42 info.dmPelsHeight = mode.height;
45 info.dmFields |= DM_DISPLAYFREQUENCY;
46 info.dmDisplayFrequency = mode.rate;
49 LONG ret = ChangeDisplaySettings(&info, CDS_FULLSCREEN);
50 if(ret!=DISP_CHANGE_SUCCESSFUL)
51 throw unsupported_video_mode(mode);
54 bool Display::process_events()
57 if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
59 DispatchMessage(&msg);
66 void Display::check_error()
71 } // namespace Graphics