代码之家  ›  专栏  ›  技术社区  ›  djeidot

具有Vista样式的CMFCButton

  •  5
  • djeidot  · 技术社区  · 15 年前

    我似乎无法在对话框应用程序中以Vista样式显示CMFCButton。我将VS2008与MFC功能包一起使用。

    • 指定基于对话框的项目。
    • 为每个按钮添加一个变量。将其中一个变量设置为CButton,另一个变量设置为CMFCButton。
    • 编译并运行。

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

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

    我错过了什么?

    1 回复  |  直到 15 年前
        1
  •  9
  •   Steve Beedie    15 年前

    CMFCButton BS_OWNERDRAW 默认设置的样式-可以在 OnInitDialog() 对于您的对话框:

    mfcButton.ModifyStyle(BS_OWNERDRAW, 0, 0);
    

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

    CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
    

    ModifyStyle 这将生成符合默认样式但仍具有较新渲染功能的按钮。