1

我在 Visual Studio 2010 vc++ 中完成了一个项目,我在运行时使用 WNDCLASS 创建了多个窗口。我想创建一个适用于所有创建窗口的颜色主题。

  1. 有没有办法可以将默认窗口颜色常量更改为所需的颜色?例如,如果改变 COLOR_BTNFACE 的值,它会自动更新所有的裁判窗口按钮。
  2. 有没有其他方法可以在我的项目中实现自定义主题,而无需手动搜索和替换使用的颜色。??

提前致谢

4

1 回答 1

0

由于应用另一个主题而在运行时更改所有窗口的背景颜色需要您的一些实施工作。据我所知,没有任何机制可以为您做到这一点。

假设您编写了一个 Windows 应用程序并且您希望在运行时获得主题支持:

我不会做的事情:您可以创建自己的窗口类 (WNDCLASS) 并设置您喜欢的背景颜色 (HBRUSH hbrBackground) 并从此窗口类创建所有窗口。这有一些严重的缺点,因为您需要为每个窗口类(按钮、滑块、弹出窗口等)创建一个窗口类,并且如果不重新创建所有窗口就无法在运行时更改它。

我会做什么:我将为我的应用程序创建的所有窗口引入一个通用基类。该基类包含诸如背景颜色之类的东西(以及其他常见有用的东西)。当应用另一种背景颜色时,您只需要告诉所有窗口有关该更改(通过 setBackgroundColor()),以便它们可以重新绘制内容。

我希望这会有所帮助。

于 2013-09-20T13:24:42.980 回答