如何修改GLFW窗口标题栏颜色?适配Windows深色模式
GLFW窗口标题适配Windows深色主题及手动修改颜色方案
适配Windows系统深色主题
GLFW本身没有直接提供适配系统深色主题的接口,需要借助Windows原生API实现。核心是通过DwmSetWindowAttribute函数设置窗口的DWMWA_USE_IMMERSIVE_DARK_MODE属性,让标题栏跟随系统主题切换。
步骤及代码示例:
- 创建GLFW窗口后,获取窗口的原生句柄:
HWND hwnd = glfwGetWin32Window(window); - 调用
DwmSetWindowAttribute开启沉浸式深色模式:
#include <dwmapi.h> #pragma comment(lib, "dwmapi.lib") // ... 创建GLFW窗口的代码 ... HWND hwnd = glfwGetWin32Window(window); BOOL darkMode = TRUE; // TRUE开启深色模式,FALSE关闭 DwmSetWindowAttribute(hwnd, DWMWA_USE_IMMERSIVE_DARK_MODE, &darkMode, sizeof(darkMode));
手动修改标题栏颜色
同样通过Windows的DwmSetWindowAttribute函数,设置DWMWA_CAPTION_COLOR属性来指定标题栏的RGB颜色值。
代码示例:
#include <dwmapi.h> #pragma comment(lib, "dwmapi.lib") // ... 创建GLFW窗口的代码 ... HWND hwnd = glfwGetWin32Window(window); COLORREF titleColor = RGB(30, 30, 30); // 自定义深色标题栏颜色 DwmSetWindowAttribute(hwnd, DWMWA_CAPTION_COLOR, &titleColor, sizeof(titleColor));
注意:以上方法仅适用于Windows 10 1809及以上版本,且需要链接dwmapi.lib库。如果要兼容更早系统版本,需要额外做版本判断。
内容的提问来源于stack exchange,提问作者Gasim
相关产品推荐
相关产品推荐

