【问题标题】:CMFCButton with Vista StyleVista风格的CMFCButton
【发布时间】:2010-11-30 17:38:28
【问题描述】:

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

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

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

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

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

我在这里缺少什么?

【问题讨论】:

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


    【解决方案1】:

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

    mfcButton.ModifyStyle(BS_OWNERDRAW, 0, 0);
    

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

    CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
    

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

    【讨论】:

    • 谢谢,这解决了问题。但是,这是否意味着我无法使用 CMFCButton 的特定功能,例如更改文本颜色?
    • 好点 - 原来还有另一种方法,答案更新了细节。
    猜你喜欢
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 2010-11-05
    相关资源
    最近更新 更多