如何更改标题栏的背景颜色C++/SDL 2

4ngedf3f  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(269)

更改标题栏窗口的背景色时遇到问题。是否可以使用SDL2进行更改?要像这样从白色更改为黑色吗

qv7cva1a

qv7cva1a1#

我认为仅使用SDL2是不可能的,但您可以获得本机窗口并使用它。
看你的截图,我假设你使用的是Windows,你可以得到HWND,如下所示(see this answer):

SDL_SysWMinfo wmInfo;
SDL_VERSION(&wmInfo.version);
SDL_GetWindowWMInfo(window, &wmInfo);
HWND hwnd = wmInfo.info.win.window;

完成后,您需要设置边框颜色和标题颜色(see this answer):

#include <dwmapi.h>

COLORREF titlebar_color = 0x0015171E;
DwmSetWindowAttribute(
    hwnd, DWMWINDOWATTRIBUTE::DWMWA_BORDER_COLOR,
    &titlebar_color, sizeof(titlebar_color)
);

DwmSetWindowAttribute(
    hwnd, DWMWINDOWATTRIBUTE::DWMWA_CAPTION_COLOR,
    &titlebar_color, sizeof(titlebar_color))
);

当然,所有这些都只能在Windows(我认为是10或更高版本)上运行,而且,据我所知,甚至不能保证运行。所以你可能需要检查所有的错误。
另一种解决方案不是您所要求的,但完全在SDL2中完成,即创建无边框窗口并绘制您自己的标题栏...

相关问题