vs2010的MFC库十分大,哪怕一个简单的dialog也是1M多,甚至接近2M。
而2010使用2008的库的时,就会体积减小十分多。
网上有提供手工修改的方法,但是每添加一个工程或dialog都必须手工修改一次,十分的麻烦。
这里介绍一个通过修改vs的向导脚本实现自动兼容与修改。
以下红字部分为需要添加的地方。
\vs2010\VC\VCWizards\AppWiz\MFC\Application\templates\2052\dialog.cpp
①
#if _MFC_VER >= 0x0A00
#include "afxdialogex.h"
#endif
\vs2010\VC\VCWizards\AppWiz\MFC\Application\templates\2052\stdafx.h
①:
[!if MENUBAR_TOOLBAR || RIBBON_TOOLBAR || USE_VISUAL_MANAGER]
#if _MFC_VER >= 0x0A00
#include <afxcontrolbars.h> // 功能区和控件条的 MFC 支持
#endif
[!endif]
②:
[!endif]
[!endif]
#if _MFC_VER <= 0x0900
#define CDialogEx CDialog
#endif
[!if MANIFEST]
\vs2010\VC\VCWizards\AppWiz\MFC\Application\templates\2052\dlgroot.cpp
①:
#if _MFC_VER >= 0x0A00
// 支持重新启动管理器
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
#endif
②:
#if _MFC_VER >= 0x0A00
// 创建 shell 管理器,以防对话框包含
// 任何 shell 树视图控件或 shell 列表视图控件。
CShellManager *pShellManager = new CShellManager;
#endif
③:
#if _MFC_VER >= 0x0A00
// 删除上面创建的 shell 管理器。
if (pShellManager != NULL)
{
delete pShellManager;
}
#endif
\vs2010\VC\VCWizards\AppWiz\MFC\Application\templates\2052\root.cpp
①:
[!endif]
[!if RESTART_MGR_SUPPORT]
#if _MFC_VER >= 0x0A00
// 支持重新启动管理器
[!if !RESTART_MGR_SUPPORT_RESTART && !RESTART_MGR_SUPPORT_RECOVERY]
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
[!endif]
[!if RESTART_MGR_SUPPORT_RESTART && !RESTART_MGR_SUPPORT_RECOVERY]
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART_ASPECTS;
[!endif]
[!if RESTART_MGR_SUPPORT_RECOVERY && !RESTART_MGR_SUPPORT_RESTART]
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RECOVERY_ASPECTS;
[!endif]
[!if RESTART_MGR_SUPPORT_RECOVERY && RESTART_MGR_SUPPORT_RESTART]
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS;
[!endif]
#ifdef _MANAGED
// 如果应用程序是利用公共语言运行时支持(/clr)构建的,则:
// 1) 必须有此附加设置,“重新启动管理器”支持才能正常工作。
// 2) 在您的项目中,您必须按照生成顺序向 System.Windows.Forms 添加引用。
System::Windows::Forms::Application::SetUnhandledExceptionMode(System::Windows::Forms::UnhandledExceptionMode::ThrowException);
#endif
#endif
[!endif]
\vs2010\VC\VCWizards\AppWiz\MFC\Application\html\2052\default.htm
<SYMBOL NAME="DYNAMIC_MFC" TYPE="radio" VALUE="false"></SYMBOL>
<SYMBOL NAME="STATIC_MFC" TYPE="radio" VALUE="true"></SYMBOL>
做完以上操作,可直接把2010自带的MFC目录,改名掉,然后把2008的mfc目录拷过来。随时切换。
\vs2010\VC\atlmfc
\vs2008\VC\atlmfc
这样比在编译器设置里直接使用vc90的优势是,可以同时使用c++tr1,还能同时使用mfc2008 lib
====
mfc2008打包下载地址: http://download.youkuaiyun.com/detail/laybor/6312115
不想手工改的,可以下载以上5个文件打包文件: http://download.youkuaiyun.com/detail/laybor/6274189
====