You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从DXGI SwapChain或D3D11 Device获取HWND?

获取D3D11中DXGISwapChain关联的HWND

D3D11里无法直接从D3D11Device获取HWND——因为单个D3D11Device可以对应多个DXGISwapChain(绑定不同窗口),但你可以直接通过DXGISwapChain的GetDesc方法获取绑定的窗口句柄,具体实现如下:

void OnPresent(IDXGISwapChain *swapChain) {
    DXGI_SWAP_CHAIN_DESC swapChainDesc = {};
    HRESULT hr = swapChain->GetDesc(&swapChainDesc);
    if (SUCCEEDED(hr)) {
        HWND targetHwnd = swapChainDesc.OutputWindow;
        // 拿到HWND后可执行后续逻辑
    }
}

关键说明:

  • DXGI_SWAP_CHAIN_DESC结构体的OutputWindow字段,就是创建该SwapChain时传入的窗口句柄。
  • 调用GetDesc必须检查返回值,确保操作成功(比如SwapChain已失效的情况会返回失败)。
  • D3D11Device本身不维护窗口关联信息,因此只能从与窗口直接绑定的SwapChain入手获取HWND。

内容的提问来源于stack exchange,提问作者Bork

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 00:10:36