在vs2010中定制VC++project向导有例如以下两种方式:

  1. 改动现有向导。以满足自己的须要;

  2. 使用“自己定义向导”来产生一个向导骨架,并设计自己的向导。

本文档仅仅讨论另外一种方式。

建立自己定义向导过程例如以下:

第一步。新建“自己定义向导”,建立方法例如以下图所看到的:

新建的自己定义向导project例如以下图所看到的。主要包括四个文件夹(都在START_PATH文件夹中):html、image、scripts和templates。

html文件夹存放着作为UI的HTML文件;images文件夹存放着UI所使用的图片文件;scripts文件夹存放着用于控制向导行为的脚本文件;而templates文件夹存放着向导用来产生输出的模板文件。

新建向导project完毕后,再次new Project就会出现例如以下图所看到的的自己定义project向导。

注意:有时候新建自己定义向导后,在此new project时不会出现新定义的向导,这时候就要把CreateCustomProject()函数中PROJECT_TEMPLATE_PATH改为START_PATH。

PROJECT_TEMPLATE_PATH:
VC安装文件夹下的VCWizards文件夹

START_PATH:新建向导project文件夹

用自己定义的project向导新建文件的project布局例如以下图所看到的。project文件夹中没有Header Files和Resource
Files。

第二步,加入Header Files和Resource
Files

加入方法:在default.js里面的AddFilters(proj)函数中加入例如以下红色字体代码:

function AddFilters(proj)

{

try

{

//Add the folders to your project

varstrSrcFilter = wizard.FindSymbol('SOURCE_FILTER');

vargroup = proj.Object.AddFilter('Source Files');

group.Filter= strSrcFilter;

var strHeaderFilter =wizard.FindSymbol('SOURCE_FILTER');

var group =proj.Object.AddFilter('Header Files');

group.Filter = strHeaderFilter;

var strResourceFilter =wizard.FindSymbol('SOURCE_FILTER');

var group =proj.Object.AddFilter('Resource Files');

group.Filter = strResourceFilter;

}

catch(e)

{

throwe;

}

}

效果图例如以下:

第三步,在自己定义向导project中加入自己定义类,目的是在用自己定义project向导生成的project中能出现自己定义的类。

加入方法:

右击Template Files加入类,例如以下图所看到的

加入的类将出现树节点中,然后将这两个文件进行保存。

Templates.inf文件。在里面加入类的头文件和源文件,例如以下图所看到的:

最后,打开文件所在文件夹,将类的头文件源文件移动到Templates\1033文件夹下,例如以下图所看到的:

此时,新建project,在project文件夹下就有了类的头文件和源文件。例如以下图所看到的,

第四步,把类的头文件放在Header Files中。源文件放在Source
Files中

方法:在default.js中的AddFilters中加入例如以下红色字体代码。

function AddFilters(proj)

{

try

{

//Add the folders to your project

//varstrSrcFilter = wizard.FindSymbol('SOURCE_FILTER');

var strSrcFilter ="cpp";

var group =proj.Object.AddFilter('Source Files');

group.Filter = strSrcFilter;

// var strHeadFilter =wizard.FindSymbol('HEADER_FILTER');

var strHeadFilter = "h"

var headgroup = proj.Object.AddFilter('HeaderFiles');

headgroup.Filter = strHeadFilter;

//var strHeadFilter =wizard.FindSymbol('HEADER_FILTER');

var strJsonFilter = "json";

var resourceGroup =proj.Object.AddFilter('Resource Files');

resourceGroup.Filter = strJsonFilter;

}

catch(e)

{

throwe;

}

}

效果例如以下图所看到的。

第五步。就是改动类,得到所需的模板类了,假设须要类名和project名一致的话,做例如以下更改:

注意宏[!output XXX_XXX]假设想得到系统当前时间,用宏[!output
CURRENT_TIME]。然后相应的再default.js中加入例如以下红色代码,

function OnFinish(selProj,selObj)

{

try

{

var date;

var dateString;

date = new Date();

dateString = (date.getMonth() + 1) +"/";

dateString += date.getDate() +"/";

dateString += date.getYear();

wizard.AddSymbol("CURRENT_DATE", dateString);

var strProjectPath =wizard.FindSymbol('PROJECT_PATH');

varstrProjectName = wizard.FindSymbol('PROJECT_NAME');

selProj= CreateCustomProject(strProjectName, strProjectPath);

AddConfig(selProj,strProjectName);

AddFilters(selProj);

第六步。project环境配置,在default.vcxproj中进行。

关键文件解说:

default.js:

templates.inf:

default.vcxproj:

.vsz:

.vsdir:

VS自己定义project向导开发(Custom Wizard)的更多相关文章

  1. Visual Studio项目模板与向导开发

    在[Xamarin+Prism开发详解系列]里面经常使用到[Prism unity app]的模板创建Prism.Forms项目: 备注:由于Unity社区已经不怎么活跃,下一个版本将会有Autofa ...

  2. Android 自己定义控件开发入门(二)

    上一次我们讲了一堆实现自己定义控件的理论基础.列举了View类一些能够重写的方法,我们对这些方法的重写是我们继承View类来派生自己定义控件的关键 我通过一个最简单的样例给大家展示了这一个过程,不管是 ...

  3. Drupal 自己定义主题实体 Theming Custom Entities

    在自己定义主题中输出结果时,有三个部分或很多其它特殊的函数.如 hook_menu,Page Callback.MODULE_theme 钩子 1.hook_menu 为了使用自己定义的实体.像创建. ...

  4. MXNet 定义新激活函数(Custom new activation function)

    https://blog.csdn.net/weixin_34260991/article/details/87106463 这里使用比较简单的定义方式,只是在原有的激活函数调用中加入. 准备工作下载 ...

  5. Wizard Framework:一个自己开发的基于Windows Forms的向导开发框架

    最近因项目需要,我自己设计开发了一个基于Windows Forms的向导开发框架,目前我已经将其开源,并发布了一个NuGet安装包.比较囧的一件事是,当我发布了NuGet安装包以后,发现原来已经有一个 ...

  6. 软件project—思考项目开发那些事(一)

    阅读文件夹: 1.背景 2.项目管理,质量.度量.进度 3.软件开发是一种设计活动而不是建筑活动 4.高速开发(简单的系统结构与复杂的业务模型) 5.技术人员的业务理解与产品经理的业务理解的终于业务模 ...

  7. 前端project师养成记:开发环境搭建(Sublime Text必备插件推荐)

    为了让自己更像一个前端project师,决定从开发环境開始武装自己. 本文将介绍前段project师开发的一些利器的安装步骤,主要包含了: 1.Node.js的安装 2.Grunt的安装及经常使用插件 ...

  8. Eclipse整合Tomcat开发Dynamic Web Project环境总结

    一.引子 习惯了MyEclipse的你是否曾想过基于Eclipse进行Dynamic Web Project项目开发呢?网上资料颇多,但是实践起来却发现总有这样那样的问题,设计Lucene搜索引擎项目 ...

  9. 详解Arduino Uno开发板的引脚分配图及定义(重要且基础)

    首先开发板实物图如下: 在本篇文章中,我们将详细介绍Arduino开发板的硬件电路部分,具体来说,就是介绍Arduino Uno开发板的引脚分配图及定义.Arduino Uno微控制器采用的是Atme ...

随机推荐

  1. cf上分的失落->高兴->更失落

    cf昨日做出一个题居然div2打了1800多名直接上分了...我原以为垂直落地但是....我现在1399差一分就能蓝名了啊啊啊啊,以后不一定会有这个水平的啊,给个蓝名体验卡不行吗,多加一分会死啊... ...

  2. bzoj2588 counting on a tree

    题目不难,树上可持久化数据结构. 帖代码: #include<cstdio> #include<algorithm> using namespace std; #define ...

  3. 条款13:以对象管理资源(use objects to manage resources)

    NOTE: 1.为防止资源泄漏,请使用RAII对象,它们在构造函数中获得资源并在析构函数中释放资源. 2.两个常被使用的RAII classes 分别是 trl::shared_ptr 和 auto_ ...

  4. 嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&seid=15873837810484552531 中的1-14讲

    #coding=gbk#嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&seid=1587383 ...

  5. LeetCode(42)Trapping Rain Water

    题目 Given n non-negative integers representing an elevation map where the width of each bar is 1, com ...

  6. 2018 GDCPC 省赛总结

    第二次参加省赛了,对比上年连STL都不会的acm入门者来说, 今年是接触acm的第二年. 首先要说的是今年的省赛比上年人数多了很多, 闭幕式200多支队伍坐满了整个礼堂还要站着不少人,所以今年的竞争其 ...

  7. Eclipse设置反编译插件

    有些项目我们想看看引入的包的源码的时候,因为打包好的.class文件的内容我们是看不懂的,但是又懒得去找源码文件的时候,就会用到反编译工具. 步骤: 1.安装反编译插件. 2.设置使用的反编译工具. ...

  8. 数据结构实验1:C++实现静态顺序表类

    写了3个多小时,还是太慢了.太菜了! 图1 程序运行演示截图1 实验1 1.1 实验目的 熟练掌握线性表的顺序存储结构. 熟练掌握顺序表的有关算法设计. 根据具体问题的需要,设计出合理的表示数据的顺序 ...

  9. H5在ios弹窗状态下调起输入法后关闭输入法页面元素错位解决办法

    最近开发移动端,有个需求:点击退款弹出文本框和发送短信按钮,输入手机号码和验证码确定退款. 发现安卓手机没毛病,但是在ios手机上点击文本框调起输入法,此时点击完成或者关闭输入法就无法正常操作了,肉眼 ...

  10. Leetcode 227.基本计算器II

    基本计算器II 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格  . 整数除法仅保留整数部分. 示例 1: 输入: " ...