当自定义的应用程序向导生成一个项目时,则它只是不能替换自动创建的.dsp 项目设置文件。 .dsp 文件中的项目设置由假定所有生成的项目为 MFC 项目的内部规则设置。 但是,Visual C++ 5.0 的新对象模型允许修改工具设置,以便从生成的项目中删除所有依赖 MFC 的自定义 AppWizards。

Visual C++5.0 CCustomAppWiz 类现在具有名为 CustomizeProject 在虚拟重写。 CustomizeProject 提供与 IBuildProject 接口自定义向导。 IBuildProject 配置方法提供了一个的 IConfiguration 界面,用于在项目中每个生成配置。 IConfiguration 可以添加和删除如编译器提供给工具的设置。 在使用这些方法自定义向导可以删除在 MFC 上添加依存关系的设置。

示例代码

以下是示例 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 语句导入,并创建 DEVBLD.PKG 类型库的所有类型的定义。 这将允许使用窗体 IInterfacePtr 的 COM 智能指针,以及新的 _ bstr _ t 和 _ variant _ t 类型代码。 这些新类型的所有自动清理使用的内存,并在超出范围时释放保持的接口指针。

此外请注意标准的自定义应用程序向导将使用预编译的头文件 StdAfx.h。 应当将放 # import # 结尾处的语句 StdAfx.h 中包含列表。

注意: DevBld.pkg 路径将不同,如果您使用 Visual C++ 版本 6.0。 假设 Visual C++ 版本 6.0 已安装到 C: 驱动器上的默认目录,# import 语句应阅读,如下所示:

   #import "C:\Program Files\Microsoft Visual Studio\Common\MsDev98\Bin\IDE\DevBld.Pkg"

注意: 上面 </a0>-# import 行必须在代码中相同的行。

请参阅有关 Visual C++ 文档。

警告

  • 请注意没有编程的方法可用于删除内部的项目将该控件设置"Microsoft 基础类"设置在常规的项目设置由包含上述代码的自定义向导生成的方式项目仍将显示"使用 MFC 共享 DLL 中"。 您可以更改此设置,唯一方法是不支持修改.dsp 项目设置文件。 但是,此设置仅用于某些 DevStudio MFC 用户界面元素如类向导和一些基于 MFC 的组件库组件。 它应该有一个非 MFC 项目没有影响。
  • 即使后修改项目设置使用 AddToolSettings 和与上面的 RemoveToolSettings,默认项目设置将仍然保持相同 Visual C++ 版本 5.0 中。 如果项目生成此自定义应用程序向导的用户打开项目设置,并单击重置,已还原的项目设置将包含已删除的 MFC 引用。 再次,防止出现这种唯一的方法是使不支持的更改生成的.dsp 项目设置文件手动自定义应用程序向导已创建项目后。

    Visual C++ 版本 6.0 提供新的自动化方法更改默认项目设置的。 配置对象支持 MakeCurrentSettingsDefault 方法。 此方法更改成为当前的设置配置的默认项目设置。

  • 当您使用 RemoveToolSettings 时,删除一次的只有一个工具设置。 在上面示例中进行另一调用 RemoveToolSettings CL.EXE 命令行而不是附加到同一个 varSwitch 语句的末尾删除定义中删除另一个的预处理器定义。 此外,请记住,工具设置的是大小写区分"/ d"和"/ D"不是相同的操作。
  • 遗憾的是,AddToolSettings、 RemoveToolSettings,和 AddCustomBuildStep (另一个 IConfiguration 方法) 运行仅在 Visual C++ 版本 5.0 在整个项目上,他们不能进行工具设置或创建自定义生成步骤单个文件。 是例如最好通常添加处理使用 MIDL 文件并生成 TLB 和其他所需的项目文件的一个项目的 IDL 文件的自定义生成步骤。 在 Developer Studio 97 对象模型不支持此。 单个文件的自定义生成步骤需要自定义应用程序向导生成项目后手动添加。

    Visual C++ 版本 6.0 对象模型不会支持若要更改的方法文件设置,并添加自定义生成步骤的文件。 请参阅 Visual C++ 版本 6.0 文档的下列方法配置对象:

    AddFileSettings
    RemoveFileSettings
    AddCustomBuildStepToFile

转载自:[url]http://support.microsoft.com/kb/173483[/url]

大学生计算机学习社区

转载于:https://blog.51cto.com/cownew/136572

如何创建生成非 MFC 项目的自定义 AppWizards相关推荐

  1. VC++非MFC项目中使用TRACE宏

    MFC的TRACE宏可以在Debug时向VS的调试输出窗口输出字串符,用来调试时跟踪变量很方便: 如果不是MFC项目或者ATL的项目的话是不能使用这个宏的: 在项目中额外包含windows.h这个头文 ...

  2. django之创建第6-1个项目-自定义过滤器

    1.在站点blog目录下创建templatetags文件夹 2.templatetags目录下需要作为一个包来处理和调用其中的内容,需要有一个__init__.py文件 3.在templatetags ...

  3. 创建MFC项目,资源视图加载失败

    创建MFC项目,资源视图加载失败. 原因可能是路径中含有中文,将路径修改为全英文后,无此错误

  4. 第一个MFC项目创建

    用向导创建mfc项目(VS2022) 1)文件–>新建–>项目 2)在创建新项目界面,选择mfc应用–>下一步 3)在配置新项目界面输入你的项目名,以及存储位置等,然后创建 4)在M ...

  5. 创建与使用DLL项目常见错误和解决办法

    前面讲原理有点啰嗦,如果直接看创建和使用DLL,直接跳转到[DLL项目创建]. DLL 在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件, ...

  6. 计算机图形学孔令德VS2022新建MFC项目基本操作-绘制金刚石图案

    计算机图形学孔令德VS2022新建MFC项目基本操作 VS没有MFC组件 如果你的vs2022在安装的时候没有下载mfc组件的话,需要自行下载 如果下载了,如下图 没有下载,则点击上图中的安装多个工具 ...

  7. 4.创建第一个MVC项目

    第2章          Hello MVCWorld 内容摘要 初始化开发环境 创建第一个ASP.NETMVC应用程序 控制器.活动和视图 简单数据访问 本章我们将引入贯穿本书第1部分的示例程序-- ...

  8. VS2015之博大精深的MFC项目开发(二)

    VS2015之博大精深的MFC项目开发(二) 第二章 MFC原理篇 1.MFC06-1:CString类的测试 1.1 operator+函数 1.2 Delete函数 1.3 Find函数 1.4 ...

  9. 手机python软件怎么创建项目_创建成功的 Python 项目

    创建成功的 Python 项目 Patrick Altman 2012 年 3 月 14 日发布 Python 开源项目的生态系统丰富多样.您可以在这一雄厚的基础上完成下一个开源项目的生产.此外,这也 ...

最新文章

  1. 计算机的桌面图标类型,给“我的电脑”翻身 另类桌面图标排列
  2. 摘要注释_《间架结构摘要九十二法》高清图片+注释 爱书法的朋友值得收藏
  3. 贝叶斯估计和最大后验估计
  4. 怎么样实现对一个对象的深拷贝
  5. Java并发编程实战~Guarded Suspension模式
  6. python简单爬虫入门一_Python爬虫快速入门:基本结构简单实例
  7. Python基础(12)--模块
  8. 【机器学习】机器学习从零到掌握之二 -- 教你实现K近邻算法
  9. VXLAN详解(一)
  10. Atitit webservice的发现机制 discover机制
  11. 强大的Android参数模拟器,自由修改手机型号、SDK版本号等信息
  12. 【室内/外设计】天正T20V4.0软件安装教程
  13. linux user32.lib,Linux之#pragma的用法
  14. 单片机复位电路的可靠性设计及精典实用复位电路
  15. 请收起你的善良,越是心地善良的女人,通常命越差
  16. 思维导图哪个软件比较好?不妨试试这几款应用
  17. 怎样在一台电脑里访问其他电脑里的虚拟机
  18. 使用Arduino实现JDY-40无线模块的通信
  19. 项目:广告点击预测率评估
  20. MessageSolution企业邮件归档管理系统EEA信息泄露漏洞(cnvd-2021-10543)

热门文章

  1. 每小时50哈希——看看一个内部员工是如何摧毁整个公司网络的?
  2. 分享Web应用运行的细节问题:预编译提高网站性能、跟踪用户习惯和解决线程同步...
  3. ECShop 前台用户中心调整左侧栏目及中心部分呈现页面
  4. java邮件系统(java邮件收发系统源代码和下载地址)
  5. Oracle interview
  6. wordpress插件feed count中文版
  7. testng接口自动化测试_Java+Maven+TestNG接口(API)自动化测试教程(10) 使用 Jenkins 构建自动化测试持续集成...
  8. python数据库模糊查询_Python操作mongodb数据库进行模糊查询操作示例
  9. 第4章 变量、作用域和内存问题
  10. java小基础之instanceof运算符