當(dāng)自定義的應(yīng)用程序向?qū)梢粋€(gè)項(xiàng)目時(shí),則它只是不能替換自動(dòng)創(chuàng)建的.dsp 項(xiàng)目設(shè)置文件。 .dsp 文件中的項(xiàng)目設(shè)置由假定所有生成的項(xiàng)目為 MFC 項(xiàng)目的內(nèi)部規(guī)則設(shè)置。 但是,Visual C++ 5.0 的新對(duì)象模型允許修改工具設(shè)置,以便從生成的項(xiàng)目中刪除所有依賴(lài) MFC 的自定義 AppWizards。
Visual C++5.0 CCustomAppWiz 類(lèi)現(xiàn)在具有名為 CustomizeProject 在虛擬重寫(xiě)。 CustomizeProject 提供與 IBuildProject 接口自定義向?qū)А?IBuildProject 配置方法提供了一個(gè)的 IConfiguration 界面,用于在項(xiàng)目中每個(gè)生成配置。 IConfiguration 可以添加和刪除如編譯器提供給工具的設(shè)置。 在使用這些方法自定義向?qū)Э梢詣h除在 MFC 上添加依存關(guān)系的設(shè)置。
示例代碼
以下是示例 CustomizeProject 重寫(xiě)的演示 MFC 依賴(lài)項(xiàng)的刪除:
#import "c:\Program Files\DevStudio\SharedIDE\bin\ide\devbld.pkg"
void CNoMfcCustWizAppWiz::CustomizeProject(IBuildProject* pProject)
{
using namespace DSProjectSystem;
long lNumConfigs;
IConfigurationsPtr pConfigs;
IBuildProjectPtr pProj;
// Needed to convert IBuildProject to the DSProjectSystem namespace
pProj.Attach((DSProjectSystem::IBuildProject*)pProject, true);
pProj->get_Configurations(&pConfigs);
pConfigs->get_Count(&lNumConfigs);
//Get each individual configuration
for (long j = 1 ; j < lNumConfigs+1 ; j++)
{
_bstr_t varTool;
_bstr_t varSwitch;
IConfigurationPtr pConfig;
_variant_t varj = j;
pConfig = pConfigs->Item(varj);
// Remove Preprocessor def for MFC DLL specifier, _AFXDLL
varTool = "cl.exe";
varSwitch = "/D \"_AFXDLL\"";
pConfig->RemoveToolSettings(varTool, varSwitch, varj);
varTool = "rc.exe";
varSwitch = "/d \"_AFXDLL\"";
pConfig->RemoveToolSettings(varTool, varSwitch, varj);
// OPTIONAL
// Add Libs that MFC headers would have pulled in automatically
// Feel free to customize this listing to your tastes
varTool = "link.exe";
varSwitch = "kernel32.lib user32.lib gdi32.lib winspool.lib "
"comdlg32.lib advapi32.lib shell32.lib ole32.lib "
"oleaut32.lib uuid.lib odbc32.lib odbccp32.lib";
pConfig->AddToolSettings(varTool, varSwitch, varj);
}
}
本代碼示例使用 Visual C++ 5.0 的新 COM 編譯器支持功能的說(shuō)明。 # import 語(yǔ)句導(dǎo)入,并創(chuàng)建 DEVBLD.PKG 類(lèi)型庫(kù)的所有類(lèi)型的定義。 這將允許使用窗體 IInterfacePtr 的 COM 智能指針,以及新的 _ bstr _ t 和 _ variant _ t 類(lèi)型代碼。 這些新類(lèi)型的所有自動(dòng)清理使用的內(nèi)存,并在超出范圍時(shí)釋放保持的接口指針。
此外請(qǐng)注意標(biāo)準(zhǔn)的自定義應(yīng)用程序向?qū)⑹褂妙A(yù)編譯的頭文件 StdAfx.h。 應(yīng)當(dāng)將放 # import # 結(jié)尾處的語(yǔ)句 StdAfx.h 中包含列表。
注意: DevBld.pkg 路徑將不同,如果您使用 Visual C++ 版本 6.0。 假設(shè) Visual C++ 版本 6.0 已安裝到 C: 驅(qū)動(dòng)器上的默認(rèn)目錄,# import 語(yǔ)句應(yīng)閱讀,如下所示:
#import "C:\Program Files\Microsoft Visual Studio\Common\MsDev98\Bin\IDE\DevBld.Pkg"
注意: 上面 </a0>-# import 行必須在代碼中相同的行。
請(qǐng)參閱有關(guān) Visual C++ 文檔。
警告
轉(zhuǎn)載自:http://support.microsoft.com/kb/173483
大學(xué)生計(jì)算機(jī)學(xué)習(xí)社區(qū)