今天,我在一個(gè)已有解決方案中添加了一個(gè)ATL服務(wù)項(xiàng)目。我點(diǎn)擊該項(xiàng)目來添加新的類,選擇ATL中的ATL simple object時(shí),彈出了錯(cuò)誤提示框。內(nèi)容如下:ATL classes can only be added to MFC EXE and MFC Regular DLL projects or projects with full ATL support,如果在只包含ATL服務(wù)的解決方案中卻不會(huì)出現(xiàn)上述問題。上網(wǎng)查了一下,這里有著較詳細(xì)的討論(
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/7d9a0bb3-fa2a-416b-8982-aa0fbacb5b45)
具體的解決方法修改Microsoft Visual Studio 9.0\VC\VCWizards\1033\common.js文件中function IsATLProject(oProj)方法。方法中判斷是否ATL工程的方法如下:
if (oClass.IsDerivedFrom("CAtlDllModuleT") || oClass.IsDerivedFrom("ATL::CAtlDllModuleT") ||
oClass.IsDerivedFrom("CAtlModuleT") || oClass.IsDerivedFrom("ATL::CAtlModuleT"))
這種判斷不夠全面,遺漏了ATL服務(wù)的判斷。所以只要添加ATL服務(wù)的情況。
if (oClass.IsDerivedFrom("CAtlDllModuleT") || oClass.IsDerivedFrom("ATL::CAtlDllModuleT") ||
oClass.IsDerivedFrom("CAtlModuleT") || oClass.IsDerivedFrom("ATL::CAtlModuleT") ||
oClass.IsDerivedFrom("CAtlServiceModuleT") || oClass.IsDerivedFrom("ATL::CAtlServiceModuleT"))
保存該腳本,重新為項(xiàng)目添加ATL simple object,不再出現(xiàn)錯(cuò)誤。