@@ -139,26 +139,25 @@ void VideoWinAPI::CleanUp()
139139/* *
140140 * Erstellt das Fenster mit entsprechenden Werten.
141141 *
142- * @param[in] width Breite des Fensters
143- * @param[in] height Höhe des Fensters
144- * @param[in] fullscreen Vollbildmodus ja oder nein
142+ * @param[in] width Breite des Fensters
143+ * @param[in] height Höhe des Fensters
144+ * @param[in] displayMode Fullscreen on/off, window resizable?
145145 *
146146 * @return @p true bei Erfolg, @p false bei Fehler
147147 *
148148 * @bug Hardwarecursor ist bei Fenstermodus sichtbar,
149149 * Cursor deaktivieren ist fehlerhaft
150150 */
151- bool VideoWinAPI::CreateScreen (const std::string& title, const VideoMode& newSize, bool fullscreen )
151+ bool VideoWinAPI::CreateScreen (const std::string& title, const VideoMode& newSize, DisplayMode displayMode )
152152{
153153 if (!initialized)
154154 return false ;
155155
156- if (!RegisterAndCreateWindow (title, newSize, fullscreen ))
156+ if (!RegisterAndCreateWindow (title, newSize, displayMode ))
157157 return false ;
158158
159- if (fullscreen && !MakeFullscreen (GetWindowSize ()))
159+ if (bitset::isSet (displayMode, DisplayMode::Fullscreen) && !MakeFullscreen (GetWindowSize ()))
160160 return false ;
161- isFullscreen_ = fullscreen;
162161
163162 if (!InitOGL ())
164163 return false ;
@@ -184,30 +183,31 @@ bool VideoWinAPI::CreateScreen(const std::string& title, const VideoMode& newSiz
184183 *
185184 * @todo Vollbildmodus ggf. wechseln
186185 */
187- bool VideoWinAPI::ResizeScreen (const VideoMode& newSize, bool fullscreen )
186+ bool VideoWinAPI::ResizeScreen (const VideoMode& newSize, DisplayMode displayMode )
188187{
189188 if (!initialized || !isWindowResizable)
190189 return false ;
191190
192- if (isFullscreen_ == fullscreen && newSize == GetWindowSize ())
191+ const auto fullscreen = bitset::isSet (displayMode, DisplayMode::Fullscreen);
192+ if (IsFullscreen () == fullscreen && newSize == GetWindowSize ())
193193 return true ;
194194
195195 ShowWindow (screen, SW_HIDE);
196196
197197 VideoMode windowSize = fullscreen ? FindClosestVideoMode (newSize) : newSize;
198198 // Try to switch full screen first
199- if (isFullscreen_ && !fullscreen)
199+ if (IsFullscreen () && !fullscreen)
200200 {
201201 if (ChangeDisplaySettings (nullptr , 0 ) != DISP_CHANGE_SUCCESSFUL)
202202 return false ;
203- } else if (isFullscreen_ || fullscreen)
203+ } else if (IsFullscreen () || fullscreen)
204204 {
205205 if (!MakeFullscreen (windowSize))
206206 return false ;
207207 }
208208
209209 // Fensterstyle ggf. ändern
210- std::pair<DWORD, DWORD> style = GetStyleFlags (isFullscreen_ );
210+ std::pair<DWORD, DWORD> style = GetStyleFlags (IsFullscreen () );
211211 SetWindowLongPtr (screen, GWL_STYLE, style.first );
212212 SetWindowLongPtr (screen, GWL_EXSTYLE, style.second );
213213
@@ -263,7 +263,7 @@ RECT VideoWinAPI::CalculateWindowRect(bool fullscreen, VideoMode& size) const
263263 return wRect;
264264}
265265
266- bool VideoWinAPI::RegisterAndCreateWindow (const std::string& title, const VideoMode& wndSize, bool fullscreen )
266+ bool VideoWinAPI::RegisterAndCreateWindow (const std::string& title, const VideoMode& wndSize, DisplayMode displayMode )
267267{
268268 std::wstring wTitle = boost::nowide::widen (title);
269269 windowClassName = wTitle.substr (0 , wTitle.find (' ' ));
@@ -285,6 +285,7 @@ bool VideoWinAPI::RegisterAndCreateWindow(const std::string& title, const VideoM
285285 return false ;
286286
287287 // Create window
288+ const auto fullscreen = bitset::isSet (displayMode, DisplayMode::Fullscreen);
288289 auto adjWindowSize = fullscreen ? FindClosestVideoMode (wndSize) : wndSize;
289290 RECT wRect = CalculateWindowRect (fullscreen, adjWindowSize);
290291
@@ -415,7 +416,7 @@ void VideoWinAPI::DestroyScreen()
415416
416417 UnregisterClassW (windowClassName.c_str (), GetModuleHandle (nullptr ));
417418
418- isFullscreen_ = false ;
419+ displayMode_ = bitset::set (displayMode_, DisplayMode::Fullscreen, false ) ;
419420}
420421
421422/* *
0 commit comments