0

如果我使用 VS2010 创建一个新的 MFC GUI,创建一个对话框,在对话框中添加一个 MFC SHELLLIST 控件,对话框上的 DoModal,MFC SHELLLIST 填充了各种可以导航的高级对象。

但是我有一个旧的 MFC GUI,它最初是用 VS2005 创建的,导入到 VS2010 中,当我执行与上面完全相同的操作时,MFC SHELLLIST 是空的。

有许多 MainFrm.cpp 操作是 VS2010 的样板,而不是 VS2005。可能其中一个或多个负责激活 MFC SHELLLIST。

有人知道是哪一个吗?

4

2 回答 2

0

问题是 MFC GUI 最初是在 VS2005 下开发的,然后导入到 VS2010 中。直到我用 VS2010 创建了一个全新的项目然后有条不紊地从原始项目中导入源代码后,MFC SHELLLIST 才能工作。必须 WinMerge 源如 MainFrm.cpp 和 MainFrm.h 以避免烦人的 MFC SHELLLIST 功能。

于 2013-06-04T20:45:56.897 回答
0

我刚刚在 VS2012 中创建了一个新的 MFC 对话框应用程序,并添加了一个 shell 列表控件(工作正常)。biolerplate 代码,对于对话来说比 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并且可能需要用于主题的视觉管理器。

于 2013-05-17T06:08:47.180 回答