如何在 C++ 中更改 window style/theme
How to change window style/theme in c++
我需要一种方法来自定义 window 风格,例如 Steam 或 Spotify。我不想让 Windows(或任何其他 OS)看起来很无聊。
这可以用 Qt 或 WinApi 来完成吗?我需要 DirectX 或 OpenGL 才能做到这一点吗?
此致
是的,您可以使用 WinAPI 来完成。您关心的主要消息是 WM_NCPAINT
。当需要绘制 window 的 non-client 区域(例如,框架和标题栏)时,就会发送此内容。
请注意,默认情况下,non-client 区域的渲染由桌面 window 管理器 (DWM) 处理。如果您要处理自己的绘图,您通常希望使用 DwmSetWindowAttribute
显式 enable/disable。否则,您可能会出现奇怪的症状(例如,如果尝试切换回 "stock" 帧等,它可能不会 "notice" 并重新开始绘制您的帧)。
Microsoft 有一个article on MSDN,其中包含有关结合 DWM 执行此操作的更多详细信息。
我需要一种方法来自定义 window 风格,例如 Steam 或 Spotify。我不想让 Windows(或任何其他 OS)看起来很无聊。 这可以用 Qt 或 WinApi 来完成吗?我需要 DirectX 或 OpenGL 才能做到这一点吗?
此致
是的,您可以使用 WinAPI 来完成。您关心的主要消息是 WM_NCPAINT
。当需要绘制 window 的 non-client 区域(例如,框架和标题栏)时,就会发送此内容。
请注意,默认情况下,non-client 区域的渲染由桌面 window 管理器 (DWM) 处理。如果您要处理自己的绘图,您通常希望使用 DwmSetWindowAttribute
显式 enable/disable。否则,您可能会出现奇怪的症状(例如,如果尝试切换回 "stock" 帧等,它可能不会 "notice" 并重新开始绘制您的帧)。
Microsoft 有一个article on MSDN,其中包含有关结合 DWM 执行此操作的更多详细信息。