С помощью функции ChangeDisplaySettingsEx я могу установить CDS_FULLSCREEN через devmode структуру.
А как мне получить для данного монитора значение флага CDS_FULLSCREEN?
Основная задача определить, запущена ли сейчас игра на компьютере в Fullscreen mode или нет.
Re: Как получить текущее значение флага CDS_FULLSCREEN для монитора?
Здравствуйте, C0x, Вы писали:
C0x>С помощью функции ChangeDisplaySettingsEx я могу установить CDS_FULLSCREEN через devmode структуру. C0x>А как мне получить для данного монитора значение флага CDS_FULLSCREEN?
C0x>Основная задача определить, запущена ли сейчас игра на компьютере в Fullscreen mode или нет.
Мне кажется, что CDS_FULLSCREEN не имеет никакого отношения к тому, открыто что-то на весь экран или нет.
Чтобы определить, открыто ли какое-то окно на весь экран наверное стоит пройтись по всем окнам верхнего уровня, узнавать их габариты и сравнивать с разрешением экрана, на котором они открыты.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re[2]: Как получить текущее значение флага CDS_FULLSCREEN для монитора?
Здравствуйте, VTT, Вы писали:
VTT>Здравствуйте, C0x, Вы писали:
C0x>>С помощью функции ChangeDisplaySettingsEx я могу установить CDS_FULLSCREEN через devmode структуру. C0x>>А как мне получить для данного монитора значение флага CDS_FULLSCREEN?
C0x>>Основная задача определить, запущена ли сейчас игра на компьютере в Fullscreen mode или нет.
VTT>Мне кажется, что CDS_FULLSCREEN не имеет никакого отношения к тому, открыто что-то на весь экран или нет.
Тогда зачем приложение вызывает ChangeDisplaySettingsEx перед тем как войти в fullscreen mode?
Отсюда я логично предположил, что для меня это будет знаком, что нечто сейчас вошло в полноэкранный режим.
VTT>Чтобы определить, открыто ли какое-то окно на весь экран наверное стоит пройтись по всем окнам верхнего уровня, узнавать их габариты и сравнивать с разрешением экрана, на котором они открыты.
Я так понимаю что переход в полноэкранный режим игры это не просто создание окна на весь экран монитора.
По моему есть разница например в запуске игры и развертывании Google Chrome во весь экран. Хотя могу ошибаться. В моем случае эти две ситуации нужно различать.
Re[3]: Как получить текущее значение флага CDS_FULLSCREEN для монитора?
Здравствуйте, C0x, Вы писали:
C0x>Здравствуйте, VTT, Вы писали:
VTT>>Здравствуйте, C0x, Вы писали:
C0x>>>С помощью функции ChangeDisplaySettingsEx я могу установить CDS_FULLSCREEN через devmode структуру. C0x>>>А как мне получить для данного монитора значение флага CDS_FULLSCREEN?
C0x>>>Основная задача определить, запущена ли сейчас игра на компьютере в Fullscreen mode или нет.
VTT>>Мне кажется, что CDS_FULLSCREEN не имеет никакого отношения к тому, открыто что-то на весь экран или нет.
C0x>Тогда зачем приложение вызывает ChangeDisplaySettingsEx перед тем как войти в fullscreen mode? C0x>Отсюда я логично предположил, что для меня это будет знаком, что нечто сейчас вошло в полноэкранный режим.
VTT>>Чтобы определить, открыто ли какое-то окно на весь экран наверное стоит пройтись по всем окнам верхнего уровня, узнавать их габариты и сравнивать с разрешением экрана, на котором они открыты.
CDS_FULLSCREEN
The mode is temporary in nature.
If you change to and from another desktop, this mode will not be reset.
т.е. этот флаг указывается не для перехода в полноэкранный режим, а для индикации того, что параметры изменяются временно и потом будут возвращены обратно, что чаще всего происходит как раз у всяких полноэкранных приложений.
Короче с названием флажка они налажали. По этому поводу Raymond Chen подробно писал.
Кроме того, я не думаю, что вызов ChangeDisplaySettingsEx еще используется при переходе в полноэкранный режим (во всяком случае, явно).
С появлением DXGI одного вызова IDXGIFactory::CreateSwapChain или IDXGISwapChain::SetFullscreenState стало достаточно.
C0x>Я так понимаю что переход в полноэкранный режим игры это не просто создание окна на весь экран монитора. C0x>По моему есть разница например в запуске игры и развертывании Google Chrome во весь экран. Хотя могу ошибаться. В моем случае эти две ситуации нужно различать.
Наверное тут подразумевается просто полноэкранный режим, и "эксклюзивный" полноэкранный режим который существовал в XP и более старых системах.
Вроде как раньше все окна рисовалось в один общий экранный буффер и полноэкранное приложение могло приобрести эксклюзивный доступ к нему для максимальное производительности.
Но сейчас у каждого окна свой буффер и при переходе в полноэкранный режим он используется напрямую.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re[3]: Как получить текущее значение флага CDS_FULLSCREEN для монитора?
Здравствуйте, C0x, Вы писали:
C0x>Я так понимаю что переход в полноэкранный режим игры это не просто создание окна на весь экран монитора. C0x>По моему есть разница например в запуске игры и развертывании Google Chrome во весь экран. Хотя могу ошибаться. В моем случае эти две ситуации нужно различать.