改变最小化/最大化/关闭按钮主题。

3

我目前正在覆盖WM_NCPAINTWM_NCCALCSIZEWM_NCACTIVATE,以为我正在开发的应用程序绘制自己的颜色/主题标题栏。现在这个工作得很好,但是最小化、最大化和关闭按钮仍然是xp默认主题。

我研究了控制它们和鼠标消息的内容。但是,它们还控制缩放和其他功能,这些功能我不想失去。

有没有一种简单的方法只改变这些按钮的主题?

  • Windows XP
  • MFC表格
  • Visual Studio 2005

在编程中,那些傲慢地覆盖我选择的 GUI 外观的程序是我生命中讨厌的事情之一。不要这样做。让用户的最大化、最小化和关闭按钮看起来像用户选择的外观! - David Arno
如果这是一个具有可定制皮肤的应用程序的一部分呢?谁说用户不能参与其中了? - Matthew Scharley
3个回答

2
我认为你最好的选择是禁用这些按钮,并使用类似于我在这个答案中发布的代码的东西重新绘制它们。它是使用WinForms的C#编写的,但其中绝大部分都是重载WndProc(),你应该能够将其几乎复制粘贴到MFC中使用。
实现点击处理程序以执行您想要执行的操作非常简单。
注意:那个问题的提问者说该代码在Vista中无法工作。我没有Vista箱子,但在XP中它对我有效。

0

这实际上是我更多或少将其翻译成C#/ WinForms的教程,以创建我编写并在上面链接的代码。 - Matthew Scharley

0

你也可以查看MFC Next(VS2008 SP1)中的实现方式。那里的主题支持可以自定义绘制整个标题栏,你可以从中获得一些想法。我假设他们也在Vista上进行了测试;)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接