Поделиться через


Метод IDXGISwapChain::SetFullscreenState (dxgi.h)

Устанавливает состояние отображения в оконном режиме или в полноэкранном режиме.

Синтаксис

HRESULT SetFullscreenState(
  BOOL        Fullscreen,
  IDXGIOutput *pTarget
);

Параметры

Fullscreen

Тип: BOOL

Логическое значение, указывающее, следует ли задать состояние отображения в оконном режиме или в полноэкранном режиме. Значение TRUE для полноэкранного режима и значение FALSE для оконного режима.

pTarget

Тип: [in, необязательный] IDXGIOutput*

Если вы передаете значение TRUE параметру Fullscreen , чтобы задать состояние отображения в полноэкранном режиме, при необходимости можно задать для этого параметра указатель на интерфейс IDXGIOutput для целевого объекта вывода, содержащего цепочку буферов. Если задать для этого параметра значение NULL, DXGI выберет выходные данные в зависимости от устройства цепочки буферов и размещения окна вывода. Если вы передаете значение FALSEв fullscreen, необходимо задать для этого параметра значение NULL.

Возвращаемое значение

Тип: HRESULT

Этот метод возвращает одно из этих значений.

  • S_OK , если действие выполнено успешно и цепочка буферов была помещена в запрошенное состояние.
  • DXGI_ERROR_NOT_CURRENTLY_AVAILABLE , если действие завершилось сбоем. Когда эта ошибка будет возвращена, приложение может продолжать работать в оконном режиме и попытаться переключиться в полноэкранный режим позже. Существует множество причин, по которым цепочка буферов в оконном режиме не может переключиться в полноэкранный режим. Рассмотрим некоторые примеры.
    • Приложение выполняется на сервере терминалов.
    • Окно вывода заключается.
    • Окно вывода не имеет фокуса клавиатуры.
    • Другое приложение уже находится в полноэкранном режиме.
  • DXGI_STATUS_MODE_CHANGE_IN_PROGRESS возвращается, если при вызове этого API происходит переход в полноэкранном или оконном режиме.
  • Другие коды ошибок, если у вас нехватка памяти или возникает другая непредвиденная ошибка; Эти коды могут рассматриваться как жесткие, непрерывные ошибки.

Комментарии

DXGI может изменять состояние отображения цепочки буферов в ответ на запросы пользователя или системы.

Рекомендуется создать оконную цепочку буферов и разрешить конечному пользователю изменить цепочку буферов на полноэкранный с помощью SetFullscreenState; то есть не устанавливайте для элемента WindowedDXGI_SWAP_CHAIN_DESC значение FALSE, чтобы принудить цепочку буферов к полноэкранной. Однако при создании цепочки буферов в полноэкранном режиме также предоставьте конечному пользователю список поддерживаемых режимов отображения, так как цепочка буферов, созданная в неподдерживаемом режиме отображения, может привести к почернения экрана и запретить пользователю увидеть что-либо. Кроме того, рекомендуется использовать экран подтверждения времени ожидания или другой резервный механизм, если пользователь может изменить режим отображения.

Заметки для приложений Магазина Windows

Если приложение Магазина Windows вызывает SetFullscreenState , чтобы задать состояние отображения в полноэкранном режиме, SetFullscreenState завершается сбоем с DXGI_ERROR_NOT_CURRENTLY_AVAILABLE.

Невозможно вызвать SetFullscreenState в цепочке буферов, созданной с помощью IDXGIFactory2::CreateSwapChainForComposition.

Для модели представления flip после перевода состояния отображения в полноэкранный режим необходимо вызвать ResizeBuffers , чтобы убедиться, что вызов IDXGISwapChain1::P resent1 выполнен успешно.

Требования

Требование Значение
Целевая платформа Windows
Header dxgi.h
Библиотека DXGI.lib

См. также раздел

IDXGISwapChain