Win32 переключается из полноэкранного режима в оконный, затем нажатие alt-tab отправляет WM_SIZE со старым полноэкраннымC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Win32 переключается из полноэкранного режима в оконный, затем нажатие alt-tab отправляет WM_SIZE со старым полноэкранным

Сообщение Anonymous »

Похоже, что Win32 имеет скрытую память о старом положении окна. Когда я переключаюсь из полноэкранного режима в оконный, а затем переключаю фокус на другое окно, щелкнув или нажав Alt+Tab, Win32 отправляет сообщение WM_SIZE со старым полноэкранным размером вместо текущего окна. размер. Это приводит к тому, что окно становится огромным, хотя я этого не хочу.
Кроме того, это происходит только в том случае, если я изначально создаю свое окно в полноэкранном режиме. Если я создаю его в оконном режиме, затем перехожу в полноэкранный режим, затем снова перехожу в оконный режим, то при смене фокуса размер сохраняется правильно. Итак, запуская в оконном режиме, я каким-то образом устанавливаю скрытое состояние.
Как я могу предотвратить это? Есть ли функция для установки состояния скрытого размера?

ОБНОВЛЕНИЕ
Начинаем в оконном режиме, а затем переход в полноэкранный режим с помощью SetWindowPos() не устранил проблему.
Однако изменение размера окна с помощью Alt+Enter решает проблему. Итак, мое СУПЕР-хакерское решение, которое действительно работает, — это имитировать нажатие Alt+Enter, отправляя ключевые события в окно:

Код: Выделить всё

if (setFullScreenDelayed)
{
setFullScreenDelayed = false;

// Press Alt key
INPUT ip;
ip.type = INPUT_KEYBOARD;
ip.ki.wVk = VK_MENU;
ip.ki.dwFlags = 0;
SendInput(1, &ip, sizeof(INPUT));

// Press Enter key
ip.ki.wVk = VK_RETURN;
SendInput(1, &ip, sizeof(INPUT));

// Release Enter key
ip.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, &ip, sizeof(INPUT));

// Release Alt key
ip.ki.wVk = VK_MENU;
SendInput(1, &ip, sizeof(INPUT));
}
Хотя это работает, я бы предпочел более разумное решение.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ds-wm-size
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»