Какая функция вызывается при нажатии Alt-Enter? - PullRequest
1 голос
/ 17 декабря 2011

У меня есть игровое приложение, которое позволяет переходить в полноэкранный режим и обратно в окно при нажатии Alt-Enter.Однако, когда он переходит в полноэкранный режим, я получаю следующее предупреждение от DirectX:

DXGI Warning: IDXGISwapChain::Present: Fullscreen presentation inefficiencies incurred due to application not using IDXGISwapChain::ResizeBuffers appropriately, specifying a DXGI_MODE_DESC not available in IDXGIOutput::GetDisplayModeList, or not using DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH.

Я уже исключил две другие возможности при тестировании, поэтому я знаю только оставшиеся причиныдля предупреждения всплывают либо IDXGISwapChain :: ResizeBuffers не используется правильно, либо Windows просто прослушивается.Поскольку я не могу отладить 2-ю возможность, я остаюсь с проблемой ResizeBuffers.Чтобы отладить это, я хочу посмотреть, что происходит при нажатии Alt-Enter при переходе от оконного к полноэкранному режиму.Однако приложение, похоже, не вызывает мой метод ResizeDXGIBuffers;на самом деле, кажется, что Alt-Enter где-то встроен в Windows или DirectX, и я не знаю, как найти цепочку вызовов функций, которые срабатывают при нажатии.РЕДАКТИРОВАТЬ: Когда мой метод помещается в обработчик WM_ACTIVATEAPP, он вызывается, но я не это имел в виду.Если я возьму его из этого обработчика сообщений, окно STILL перейдет в полноэкранный режим, хотя я не вызываю никаких функций, чтобы сделать окно полноэкранным самостоятельно.Поэтому Alt + Enter должен автоматически вызывать какую-то внутреннюю функцию для этого.

Итак, это мой вопрос: кто-нибудь знает, какая функция вызывается окнами и / или DirectX 11 при нажатии Alt-Enter?

РЕДАКТИРОВАТЬ: Как говорят теги для этого вопроса, я использую DirectX 11 на компьютере с Windows.В частности, Windows 7 64-разрядная.

РЕДАКТИРОВАТЬ 2: Теперь я полностью ем нажатие клавиши Alt + Enter и вручную сохраняю состояние нажатия Alt + Enter, так что я точно знаю, что вызывается только мой код.Однако предупреждение, о котором я говорил выше, сохраняется.Я также следую рекомендациям MSDN , поэтому не знаю, куда идти дальше.

Ответы [ 2 ]

0 голосов
/ 19 января 2012

После просмотра страницы с рекомендациями MSDN и переделки моего кода, чтобы отразить все описанные методы, предупреждение исчезло. Я надеюсь, что это помогает кому-то еще, кто имеет ту же проблему.

Также, спасибо Гансу Пассанту за ссылку. Я уже исправил это к тому времени, как ты это опубликовал, но все равно спасибо.

0 голосов
/ 17 декабря 2011

Попробуйте обработать сообщение WM_ACTIVATEAPP.

Я не знаю, какую платформу вы используете для создания своих окон, поэтому я не могу сказать, как конкретно обработать это сообщение.

...