Broadm 发表于 2022-11-24 15:09

ImGui + Opengl3 + GLFW 在指定窗口绘制(已获取HWND)上

## ImGui + Opengl3 + GLFW 在指定窗口绘制(已获取HWND)上

* 默认的glfw的是不支持直接从win32句柄直接创建窗口的
* 但是, glfw有一个分支 `attach-win32-window` 已经支持了通过win32句柄直接创建窗口, 地址: (https://github.com/glfw/glfw/tree/attach-win32-window)

### 集成步骤
* 你需要手动下载 `attach-win32-window` 分支的源码,并编译
    ```git
    git clone https://github.com/glfw/glfw.git -b attach-win32-window
    ```
* 编译请参考 (https://www.glfw.org/docs/latest/compile.html)

    > 我使用的 `cmake` 直接生成的vs2019的解决方案,然后打开Release模式编译就行了,获取到静态链接库 `glfw3.lib`

* 在自己的项目中包含头文件 `glfw3.h` 和 `glfw3native.h`, 然后静态链接 `glfw3.lib` , 就可以了

### 代码示例
```cpp
HWND hd = GetDesktopWindow();      //得到桌面句柄
hd = GetWindow(hd, GW_CHILD);      //得到屏幕上第一个子窗口句柄
if (hd == NULL) {
    throw std::exception("GetDesktopWindow failed");
}
GLFWwindow* window = glfwAttachWin32Window(hd, NULL);
if (window == NULL)
    throw std::exception("glfwAttachWin32Window failed");
```

### 总结
> 这样你就获取到了通过glfw包装的win32窗口了,然后就可以愉快的在你想要的窗口上,用ImGui绘制了

Broadm 发表于 2022-11-24 17:32

审核这么慢?
页: [1]
查看完整版本: ImGui + Opengl3 + GLFW 在指定窗口绘制(已获取HWND)上