如何创建生成非 MFC 项目的自定义 AppWizards
生活随笔
收集整理的這篇文章主要介紹了
如何创建生成非 MFC 项目的自定义 AppWizards
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
當自定義的應(yīng)用程序向?qū)梢粋€項目時,則它只是不能替換自動創(chuàng)建的.dsp 項目設(shè)置文件。 .dsp 文件中的項目設(shè)置由假定所有生成的項目為 MFC 項目的內(nèi)部規(guī)則設(shè)置。 但是,Visual C++ 5.0 的新對象模型允許修改工具設(shè)置,以便從生成的項目中刪除所有依賴 MFC 的自定義 AppWizards。
Visual C++5.0 CCustomAppWiz 類現(xiàn)在具有名為 CustomizeProject 在虛擬重寫。 CustomizeProject 提供與 IBuildProject 接口自定義向?qū)А?IBuildProject 配置方法提供了一個的 IConfiguration 界面,用于在項目中每個生成配置。 IConfiguration 可以添加和刪除如編譯器提供給工具的設(shè)置。 在使用這些方法自定義向?qū)Э梢詣h除在 MFC 上添加依存關(guān)系的設(shè)置。
此外請注意標準的自定義應(yīng)用程序向?qū)⑹褂妙A(yù)編譯的頭文件 StdAfx.h。 應(yīng)當將放 # import # 結(jié)尾處的語句 StdAfx.h 中包含列表。
注意: DevBld.pkg 路徑將不同,如果您使用 Visual C++ 版本 6.0。 假設(shè) Visual C++ 版本 6.0 已安裝到 C: 驅(qū)動器上的默認目錄,# import 語句應(yīng)閱讀,如下所示: #import "C:\Program Files\Microsoft Visual Studio\Common\MsDev98\Bin\IDE\DevBld.Pkg" 注意: 上面 </a0>-# import 行必須在代碼中相同的行。
請參閱有關(guān) Visual C++ 文檔。
轉(zhuǎn)載自:[url]http://support.microsoft.com/kb/173483[/url]
大學生計算機學習社區(qū)
Visual C++5.0 CCustomAppWiz 類現(xiàn)在具有名為 CustomizeProject 在虛擬重寫。 CustomizeProject 提供與 IBuildProject 接口自定義向?qū)А?IBuildProject 配置方法提供了一個的 IConfiguration 界面,用于在項目中每個生成配置。 IConfiguration 可以添加和刪除如編譯器提供給工具的設(shè)置。 在使用這些方法自定義向?qū)Э梢詣h除在 MFC 上添加依存關(guān)系的設(shè)置。
示例代碼
以下是示例 CustomizeProject 重寫的演示 MFC 依賴項的刪除: #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 編譯器支持功能的說明。 # import 語句導(dǎo)入,并創(chuàng)建 DEVBLD.PKG 類型庫的所有類型的定義。 這將允許使用窗體 IInterfacePtr 的 COM 智能指針,以及新的 _ bstr _ t 和 _ variant _ t 類型代碼。 這些新類型的所有自動清理使用的內(nèi)存,并在超出范圍時釋放保持的接口指針。此外請注意標準的自定義應(yīng)用程序向?qū)⑹褂妙A(yù)編譯的頭文件 StdAfx.h。 應(yīng)當將放 # import # 結(jié)尾處的語句 StdAfx.h 中包含列表。
注意: DevBld.pkg 路徑將不同,如果您使用 Visual C++ 版本 6.0。 假設(shè) Visual C++ 版本 6.0 已安裝到 C: 驅(qū)動器上的默認目錄,# import 語句應(yīng)閱讀,如下所示: #import "C:\Program Files\Microsoft Visual Studio\Common\MsDev98\Bin\IDE\DevBld.Pkg" 注意: 上面 </a0>-# import 行必須在代碼中相同的行。
請參閱有關(guān) Visual C++ 文檔。
警告
- 請注意沒有編程的方法可用于刪除內(nèi)部的項目將該控件設(shè)置"Microsoft 基礎(chǔ)類"設(shè)置在常規(guī)的項目設(shè)置由包含上述代碼的自定義向?qū)傻姆绞巾椖咳詫@示"使用 MFC 共享 DLL 中"。 您可以更改此設(shè)置,唯一方法是不支持修改.dsp 項目設(shè)置文件。 但是,此設(shè)置僅用于某些 DevStudio MFC 用戶界面元素如類向?qū)Ш鸵恍┗?MFC 的組件庫組件。 它應(yīng)該有一個非 MFC 項目沒有影響。
- 即使后修改項目設(shè)置使用 AddToolSettings 和與上面的 RemoveToolSettings,默認項目設(shè)置將仍然保持相同 Visual C++ 版本 5.0 中。 如果項目生成此自定義應(yīng)用程序向?qū)У挠脩舸蜷_項目設(shè)置,并單擊重置,已還原的項目設(shè)置將包含已刪除的 MFC 引用。 再次,防止出現(xiàn)這種唯一的方法是使不支持的更改生成的.dsp 項目設(shè)置文件手動自定義應(yīng)用程序向?qū)б褎?chuàng)建項目后。
Visual C++ 版本 6.0 提供新的自動化方法更改默認項目設(shè)置的。 配置對象支持 MakeCurrentSettingsDefault 方法。 此方法更改成為當前的設(shè)置配置的默認項目設(shè)置。 - 當您使用 RemoveToolSettings 時,刪除一次的只有一個工具設(shè)置。 在上面示例中進行另一調(diào)用 RemoveToolSettings CL.EXE 命令行而不是附加到同一個 varSwitch 語句的末尾刪除定義中刪除另一個的預(yù)處理器定義。 此外,請記住,工具設(shè)置的是大小寫區(qū)分"/ d"和"/ D"不是相同的操作。
- 遺憾的是,AddToolSettings、 RemoveToolSettings,和 AddCustomBuildStep (另一個 IConfiguration 方法) 運行僅在 Visual C++ 版本 5.0 在整個項目上,他們不能進行工具設(shè)置或創(chuàng)建自定義生成步驟單個文件。 是例如最好通常添加處理使用 MIDL 文件并生成 TLB 和其他所需的項目文件的一個項目的 IDL 文件的自定義生成步驟。 在 Developer Studio 97 對象模型不支持此。 單個文件的自定義生成步驟需要自定義應(yīng)用程序向?qū)身椖亢笫謩犹砑印?
Visual C++ 版本 6.0 對象模型不會支持若要更改的方法文件設(shè)置,并添加自定義生成步驟的文件。 請參閱 Visual C++ 版本 6.0 文檔的下列方法配置對象: AddFileSettings
RemoveFileSettings
AddCustomBuildStepToFile
轉(zhuǎn)載自:[url]http://support.microsoft.com/kb/173483[/url]
大學生計算機學習社區(qū)
轉(zhuǎn)載于:https://blog.51cto.com/cownew/136572
總結(jié)
以上是生活随笔為你收集整理的如何创建生成非 MFC 项目的自定义 AppWizards的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Forms Authenticati
- 下一篇: Win XP2实用的修复工具