如果我使用VS2010创建一个新的MFC GUI,创建一个对话框,将MFC SHELLLIST控件添加到对话框,对话框中的DoModal,MFC SHELLLIST将填充各种高级对象,然后可以导航通过
但是我有一个最初用VS2005创建的旧MFC GUI,导入VS2010,当我和上面完全一样时,MFC SHELLLIST是空的。
有许多MainFrm.cpp动作是VS2010的样板,不适用于VS2005。可能其中一个或多个负责激活MFC SHELLLIST。
有谁知道哪一个?
答案 0 :(得分:0)
我刚在VS2012中创建了一个新的MFC对话框应用程序,并添加了一个shell列表控件(工作正常)。对于对话而言,生物助记符代码比对于SDI / MDI应用程序要少得多,在CMyWinApp::Initinstance
// Create the shell manager, in case the dialog contains
// any shell tree view or shell list view controls.
CShellManager *pShellManager = new CShellManager;
// Activate "Windows Native" visual manager for enabling themes in MFC controls
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
应用程序关闭时会删除CShellManager
// Delete the shell manager created above.
if (pShellManager != NULL)
{
delete pShellManager;
}
所以,我认为至少你需要创建CShellManager
并且可能需要可视化管理器来进行主题化。
答案 1 :(得分:0)
问题是MFC GUI最初是在VS2005下开发的,然后导入VS2010。在我使用VS2010创建一个全新项目然后从原始项目中有条理地导入源之前,MFC SHELLLIST将无法工作。不得不像MainFrm.cpp和MainFrm.h这样的WinMerge源代码,以避免烦人的MFC SHELLLIST功能。