IDXGISwapChain::SetFullscreenState 方法 (dxgi.h)
将显示状态设置为开窗或全屏。
语法
HRESULT SetFullscreenState(
BOOL Fullscreen,
IDXGIOutput *pTarget
);
参数
Fullscreen
类型: BOOL
一个布尔值,指定是将显示状态设置为开窗还是全屏。 TRUE 表示全屏 ,FALSE 表示 窗口化。
pTarget
类型:[in,可选] IDXGIOutput*
如果将 TRUE 传递给 全屏 参数以将显示状态设置为全屏,则可以选择将此参数设置为指向包含交换链的输出目标的 IDXGIOutput 接口的指针。 如果将此参数设置为 NULL,DXGI 将根据交换链的设备和输出窗口的位置选择输出。 如果将 FALSE 传递给 全屏,则必须将此参数设置为 NULL。
返回值
类型: HRESULT
此方法返回以下值之一。
- S_OK 操作是否成功,并且交换链处于请求的状态。
- DXGI_ERROR_NOT_CURRENTLY_AVAILABLE 操作是否失败。 当返回此错误时,应用程序可以继续在窗口模式下运行,并在以后尝试切换到全屏模式。 窗口模式交换链无法切换到全屏模式的原因有很多。 下面是一些示例。
- 应用程序在终端服务器上运行。
- 输出窗口被遮挡。
- 输出窗口没有键盘焦点。
- 另一个应用程序已处于全屏模式。
- 如果在调用此 API 时发生全屏/窗口模式转换,则返回DXGI_STATUS_MODE_CHANGE_IN_PROGRESS。
- 如果内存不足或遇到其他意外故障,则为其他错误代码;这些代码可能被视为硬性、非连续错误。
注解
DXGI 可能会更改交换链的显示状态,以响应最终用户或系统请求。
建议创建窗口交换链,并允许最终用户通过 SetFullscreenState 将交换链更改为全屏;也就是说,不要将 DXGI_SWAP_CHAIN_DESC 的 Windowed 成员设置为 FALSE,以强制交换链全屏显示。 但是,如果将交换链创建为全屏,则还会为最终用户提供受支持的显示模式列表,因为使用不受支持的显示模式创建的交换链可能会导致屏幕变黑并阻止最终用户看到任何内容。 此外,当你允许最终用户更改显示模式时,我们建议你具有超时确认屏幕或其他回退机制。
Windows 应用商店应用说明
如果 Windows 应用商店应用调用 SetFullscreenState 将显示状态设置为全屏, SetFullscreenState 将失败并 DXGI_ERROR_NOT_CURRENTLY_AVAILABLE。不能在使用 IDXGIFactory2::CreateSwapChainForComposition 创建的交换链上调用 SetFullscreenState。
对于 翻转演示文稿模型,在将显示状态转换为全屏后,必须调用 ResizeBuffers 以确保调用 IDXGISwapChain1::P resent1 成功。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | dxgi.h |
Library | DXGI.lib |