我们可以将CMFCVisualManager与基于对话框的应用程序一起使用吗?
时间:2020-03-05 18:56:02 来源:igfitidea点击:
我们可以将CMFCVisualManager与基于对话框的应用程序一起使用来更改应用程序的外观吗?如果是这样,怎么做?
想法是使用随MSVC 2008一起发布的MFC Feature Pack更改控件(如按钮)的形状,颜色等。
解决方案
回答
不,不能做,至少在谈论Feature Pack版本时不能。 BCGSoft库的版本10确实具有此功能,请参见例如:http://www.bcgsoft.com/bcgcontrolbarpro-versions.htm和http://www.bcgsoft.com/images/SkinnedBuiltInDlgs.jpg。 MFC功能包或者多或者少是BCGSoft库的早期版本,MS从它们那里购买了许可证。
回答
我们需要将"通用控件"清单添加到项目资源中。这是清单文件的代码:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="Program Name" type="win32" /> <description>Description of Program</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly>
回答
我认为我们可以通过在基本CDialog上实现OnApplicationLook来拥有一些MFC功能包功能(请选中此页上的步骤4)。最好实现整个OnApplicationLook
方法,但是我们只需将其添加到OnInitDialog
中就可以测试应用程序:
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);