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

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

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

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

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

    我在这里想念的是什么?

    最佳答案

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

    mfcButton.ModifyStyle(BS_OWNERDRAW, 0, 0);
    

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

    这样做是代替上面的ModifyStyle的结果,从而导致按钮符合默认样式,但仍具有较新的呈现功能。

    关于c++ - Vista风格的CMFCButton,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1465549/

    10-09 13:37