6

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

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

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

测试应用图片 http://img7.imageshack.us/img7/3/testapp.png

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

我在这里缺少什么?

4

1 回答 1

9

默认情况下设置CMFCButtonBS_OWNERDRAW样式 - 您可以在OnInitDialog()对话框中将其删除:

mfcButton.ModifyStyle(BS_OWNERDRAW, 0, 0);

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

CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));

这是完成而不是ModifyStyle上面的,导致按钮符合默认样式但仍具有更新的呈现功能。

于 2009-09-23T12:12:04.917 回答