如何在c ++中更改窗口样式/主题

时间:2015-05-15 15:30:52

标签: c++ user-interface styles window themes

我需要一种方法来自定义像Steam或Spotify这样的窗口样式。我不想让枯燥的Windows(或任何其他操作系统)外观。 可以用Qt或WinApi完成吗?我是否需要DirectX或OpenGL才能做到这一点?

最好的问候

1 个答案:

答案 0 :(得分:2)

是的,您可以使用WinAPI执行此操作。您关注的主要信息是WM_NCPAINT。当需要绘制窗口的非客户区域(例如,框架和标题栏)时发送的内容。

请注意,默认情况下,非客户区域的呈现由桌面窗口管理器(DWM)处理。如果您要处理自己的绘图,通常需要使用DwmSetWindowAttribute明确启用/禁用它。否则,您可能会出现奇怪的症状(例如,如果尝试切换回"库存"框架等,则可能不会"注意"并再次开始绘制框架。)

Microsoft有一个article on MSDN,其中详细介绍了与DWM一起执行此操作的详细信息。