VS自己定义project向导开发(Custom Wizard)
在vs2010中定制VC++project向导有例如以下两种方式:
改动现有向导。以满足自己的须要;
使用“自己定义向导”来产生一个向导骨架,并设计自己的向导。
本文档仅仅讨论另外一种方式。
建立自己定义向导过程例如以下:
第一步。新建“自己定义向导”,建立方法例如以下图所看到的:
新建的自己定义向导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)的更多相关文章
- Visual Studio项目模板与向导开发
在[Xamarin+Prism开发详解系列]里面经常使用到[Prism unity app]的模板创建Prism.Forms项目: 备注:由于Unity社区已经不怎么活跃,下一个版本将会有Autofa ...
- Android 自己定义控件开发入门(二)
上一次我们讲了一堆实现自己定义控件的理论基础.列举了View类一些能够重写的方法,我们对这些方法的重写是我们继承View类来派生自己定义控件的关键 我通过一个最简单的样例给大家展示了这一个过程,不管是 ...
- Drupal 自己定义主题实体 Theming Custom Entities
在自己定义主题中输出结果时,有三个部分或很多其它特殊的函数.如 hook_menu,Page Callback.MODULE_theme 钩子 1.hook_menu 为了使用自己定义的实体.像创建. ...
- MXNet 定义新激活函数(Custom new activation function)
https://blog.csdn.net/weixin_34260991/article/details/87106463 这里使用比较简单的定义方式,只是在原有的激活函数调用中加入. 准备工作下载 ...
- Wizard Framework:一个自己开发的基于Windows Forms的向导开发框架
最近因项目需要,我自己设计开发了一个基于Windows Forms的向导开发框架,目前我已经将其开源,并发布了一个NuGet安装包.比较囧的一件事是,当我发布了NuGet安装包以后,发现原来已经有一个 ...
- 软件project—思考项目开发那些事(一)
阅读文件夹: 1.背景 2.项目管理,质量.度量.进度 3.软件开发是一种设计活动而不是建筑活动 4.高速开发(简单的系统结构与复杂的业务模型) 5.技术人员的业务理解与产品经理的业务理解的终于业务模 ...
- 前端project师养成记:开发环境搭建(Sublime Text必备插件推荐)
为了让自己更像一个前端project师,决定从开发环境開始武装自己. 本文将介绍前段project师开发的一些利器的安装步骤,主要包含了: 1.Node.js的安装 2.Grunt的安装及经常使用插件 ...
- Eclipse整合Tomcat开发Dynamic Web Project环境总结
一.引子 习惯了MyEclipse的你是否曾想过基于Eclipse进行Dynamic Web Project项目开发呢?网上资料颇多,但是实践起来却发现总有这样那样的问题,设计Lucene搜索引擎项目 ...
- 详解Arduino Uno开发板的引脚分配图及定义(重要且基础)
首先开发板实物图如下: 在本篇文章中,我们将详细介绍Arduino开发板的硬件电路部分,具体来说,就是介绍Arduino Uno开发板的引脚分配图及定义.Arduino Uno微控制器采用的是Atme ...
随机推荐
- Perl monks 的 快速回复
on Jun 20, 2019 at 11:39 UTC ( #11101620=perlquestion: print w/replies, xml ) Need Help?? jimyokl ha ...
- 高德地图api之location定位
关于定位,分为GPS定位和网络定位.本文将详细描述的浏览器定位,属于网络定位.这是一种通过使用高德JS-API来实现位置定位.城市定位的方法,包含了IP定位,检索等多种网络定位方式.如果您的手机支持G ...
- SDOI2011 拦截导弹
题目描述 题解: 对于第一问,我们求二维LIS即可; 对于第二问,我们可以记录向前最长长度,向前最长方案数,向后最长长度,向后最长方案数. 其实改改树状数组即可. 还有,方案数一定要开double. ...
- 普通平衡树(treap)
题干:6种操作: 1. 插入x数 2. 删除x数(若有多个相同的数,因只删除一个) 3. 查询x数的排名(若有多个相同的数,因输出最小的排名) 4. 查询排名为x的数 5. 求x的前驱(前驱定义为小于 ...
- [JOYOI] 1061 Mobile Service
题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目描述 一个公司有三个移动服务员.如果某个地方有一个请求,某个员工必须赶到那个地方去(那个 ...
- Ubuntu16.04进入无限登录状态的解决办法
具体来说就是,输入密码之后又到了登录界面,无限循环(也许可能不能输入密码,这种状态我没有测试) 此方案仅适用于安装过NVIDIA显卡驱动的系统并且在登录界面会发现分辨率变了 如果你没有安装过NVIDI ...
- my97datepicker插件日期值改变事件 等同于input的onchang()时间
官网Demo地址http://www.my97.net/demo/index.htm <input type="text" class="Wdate" v ...
- 【POJ 1061】青蛙的约会(EXGCD)
Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事 ...
- jquery中的全选,全不选
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 理解js的几个关键问题(1):全局变量new和关于hasOwnPropery和PropertyIsEnumerable 等
一.作用域和全局变量 var test=function(){ var a=1; setTimeout(function(){ console.log(a); a=2; },1000); a=3; s ...