ChangeDisplaySettings (NULL, 0) перемещает / изменяет размеры моего окна

У меня есть окно 800×600, и этот код я использую для переключения в полноэкранный режим:

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); изменяет размер моего окна до 1366×768 (wtf ??!?!), что является моим разрешением экрана по умолчанию. Как я могу предотвратить это? (Изменение размера окна до 800×600 впоследствии не является приемлемым вариантом)

0

Решение

Вы не смогли ответить на WM_GETMINMAXINFO, Если бы вы вернули туда 800×600, Windows знала бы, что ваше окно не может изменить размер до 1366×768.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]