带Vista风格的CMFCButton

时间:2009-09-23 12:00:22

标签: c++ mfc mfc-feature-pack

我似乎无法在对话框应用程序中以Vista样式显示CMFCButton。我正在使用带有MFC功能包的VS2008。

以下是重现我的问题的一些步骤:

  • 创建一个新的MFC项目;
  • 指定基于对话框的项目。
  • 在主对话框中添加两个按钮。
  • 为每个按钮添加变量。将其中一个变量设为CButton,另一个变量为CMFCButton。
  • 编译并运行。

test app picture http://img7.imageshack.us/img7/3/testapp.png

如您所见,CButton具有正确的样式,但CMFCButton没有。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:8)

CMFCButton默认设置了BS_OWNERDRAW样式 - 您可以在对话框的OnInitDialog()中删除它:

mfcButton.ModifyStyle(BS_OWNERDRAW, 0, 0);

但是,删除所有者绘制样式会导致CMFCButton的许多方法变得无用(例如SetTextColor)。您可以通过设置可视化管理器来获取使用当前Windows主题进行渲染的按钮:

CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));

这样做而不是上面的ModifyStyle,导致按钮符合默认样式但仍具有较新的渲染功能。