私は 800x600 のウィンドウを持っています。これは、フルスクリーン モードを切り替えるために使用しているコードです。
void Window::SetFullscreen(bool value)
{
if(_fullscreen == value)
{
return;
}
_fullscreen = value;
if(_fullscreen)
{
SetWindowLongPtr(_window, GWL_STYLE, WS_POPUP);
SetWindowPos(_window, HWND_TOP, 0, 0, _width, _height, SWP_SHOWWINDOW);
EnumDisplaySettings(null, 0, &_devmode);
_devmode.dmSize = sizeof(_devmode);
_devmode.dmPelsWidth = _width;
_devmode.dmPelsHeight = _height;
_devmode.dmBitsPerPel = 32;
_devmode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
ChangeDisplaySettings(&_devmode, CDS_FULLSCREEN);
}
else
{
cout<<"---"<<endl;
ChangeDisplaySettings(null, 0);
cout<<"---"<<endl;
SetWindowLongPtr(_window, GWL_STYLE, WS_OVERLAPPEDWINDOW);
SetWindowPos(_window, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);
}
}
フルスクリーンからウィンドウ モードに切り替えるたびに、ChangeDisplaySettings(null, 0); デフォルトの画面解像度である 1366x768 (wtf ??!?!) にウィンドウのサイズを変更します。どうすればこれを防ぐことができますか? (後でウィンドウのサイズを 800x600 に戻すことは、受け入れられるオプションではありません)