我使用的例子之一,从ImGui源代码(D3d11),我想删除丑陋的默认主机窗口,标题为“亲爱的ImGui DirectX11示例”(图像附件),只使用我自己创建的窗口(红色的)。
从代码中可以看出,它是使用以下命令创建的:
// Create application window
//ImGui_ImplWin32_EnableDpiAwareness();
WNDCLASSEXW wc = { sizeof(wc), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, L"ImGui Example", NULL };
::RegisterClassExW(&wc);
HWND hwnd = ::CreateWindowW(wc.lpszClassName, L"Dear ImGui DirectX11 Example", WS_OVERLAPPEDWINDOW, 100, 100, 600, 600, NULL, NULL, wc.hInstance, NULL);
1条答案
按热度按时间pxyaymoc1#
简短的回答是你不能,因为DirectX 11窗口是用来呈现imgui内容的
但你可以隐藏它!主要是通过删除imgui窗口标题栏,使其填充整个DirectX 11窗口,将两个窗口“混合”在一起。
为此,只需将 ImGuiWindowFlags_NoTitleBar 标志传递给ImGui::开始()中的imgui窗口(根据您的需要,可能还包括ImGuiWindowFlags_NoMove和ImGuiWindowFlags_NoResize)
并在ImGui::开始()之前添加 ImGui::SetNextWindowPos() 和 ImGui::SetNextWindowSize() 指令,以将imgui窗口放置在左上角,并将其大小调整为DirectX 11窗口
最终,你应该有这样的东西: