MFC 向导外观

Posted

技术标签:

【中文标题】MFC 向导外观【英文标题】:MFC Wizard Appearance 【发布时间】:2009-10-18 14:06:43 【问题描述】:

我有一个使用 vS2008 创建的基于 MFC 向导的应用程序(CPropertySheet、CPropertyPage)。我试图让我的应用程序几乎完成一个更现代的外观。我查看了 CDhtmlDIalog,但它看起来需要做很多工作,而且文档也不是很好。接下来我想我可以使用 Feature Pack 的一些功能。我找到了一个关于这个link text 的线程,但是已经将线程中提到的代码添加到我的应用程序的各个地方,但外观从未改变。

CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Silver); CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007)); CDockingManager::SetDockingMode(DT_SMART); RedrawWindow(NULL, NULL, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME | RDW_ERASE);

还将 CPropertySheet 替换为 CMFCPropertySheet 和 CPropertyPage 替换为 CMFCPropertyPage

谢谢...

【问题讨论】:

【参考方案1】:

定义“让我的应用看起来更现代”。我假设您在这里谈论的不是 XP 风格的通用控件,而是不同的向导布局。您想要在向导的顶部还是左侧显示标题/横幅图形?查看 m_psh.dwFlags 中属性表的配置参数:PSH_WIZARD97, PSH_WATERMARK, PSH_HEADER, ...

如果您正在谈论为您的向导使用现代 Office 风格的“皮肤”(功能包风格),那么您就不走运了。不能对带有功能包的对话框执行此操作。看看 BCG Controls - 它会花钱,但它是最新的,并且您可以获得额外的功能。

如果它与您想要的完全不同,请发布它应该是什么样子的模型,和/或它现在的样子以及您不喜欢它的什么的屏幕截图。

【讨论】:

我认为我可以使用 Feature Pack 为基于向导的应用程序获得不同的外观。你已经证实了我开始怀疑的事情。我会看看 BCG Controls。谢谢...【参考方案2】:

你应该有:

主程序文件中的CWinApp 替换为CWinAppEx; 已实现 Windows Common Controls 6.0 清单(RT_MANIFEST 资源或 stdafx.h 中的 #pragma 条目)

InitInstance() 方法开头的以下代码(此代码应该已添加到新建项目向导中):

// InitCommonControlsEx() is required on Windows XP if an application
// manifest specifies use of ComCtl32.dll version 6 or later to enable
// visual styles.  Otherwise, any window creation will fail.
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// Set this to include all the common control classes you want to use
// in your application.
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);

【讨论】:

是的。我已将 CWinApp 替换为 CWinAppEx。 请再次检查我的答案,我还提供了一些建议 我遇到了拆分按钮控件的问题,该控件在 Windows 7 和 Vista 中正常工作,但在 XP 中却没有。它甚至没有以我放置的形式出现!所以我把它换成了一个MFC的菜单按钮是否可以预见,与拆分按钮相比,非常难看。我的问题:添加这些行,是否可以预测拆分按钮会起作用?

以上是关于MFC 向导外观的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2008. MFC 事件向导损坏

猎豹MFC--第一个MFC程序设计(不用向导)

CMFCColorButton 未出现在 MFC 类向导下拉列表中

如何杀死 MFC 向导按钮的焦点

MFC源码解读最原始一个MFC程序,手写不用向导

VS2017 MFC 类向导 - 如何像在 VS2015 中一样使用它