【发布时间】:2015-07-27 14:33:20
【问题描述】:
我需要一种方法来自定义窗口样式,如 Steam 或 Spotify。我不想让 Windows(或任何其他操作系统)看起来很无聊。 可以用 Qt 或 WinApi 完成吗?我需要 DirectX 或 OpenGL 吗?
最好的问候
【问题讨论】:
标签: c++ user-interface styles window themes
我需要一种方法来自定义窗口样式,如 Steam 或 Spotify。我不想让 Windows(或任何其他操作系统)看起来很无聊。 可以用 Qt 或 WinApi 完成吗?我需要 DirectX 或 OpenGL 吗?
最好的问候
【问题讨论】:
标签: c++ user-interface styles window themes
是的,您可以使用 WinAPI 做到这一点。您关心的主要消息是WM_NCPAINT。这就是需要绘制窗口的非客户区(例如框架和标题栏)时发送的内容。
请注意,默认情况下,非客户区的渲染由桌面窗口管理器 (DWM) 处理。如果您要处理自己的绘图,您通常希望使用DwmSetWindowAttribute 显式启用/禁用它。否则,您可能会出现奇怪的症状(例如,如果尝试切换回“库存”框架等,它可能不会“注意到”并重新开始绘制框架)。
Microsoft 有一个article on MSDN,其中包含有关与 DWM 一起执行此操作的更多详细信息。
【讨论】: