VS自定义工程向导开发(Custom Wizard)

时间:2022-07-17 19:07:33


 

vs2010中定制VC++工程向导有如下两种方式:

  1. 修改现有向导,以满足自己的需要;

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

本文档只讨论第二种方式。

建立自定义向导步骤如下:

第一步,新建“自定义向导”,建立方法如下图所示

VS自定义工程向导开发(Custom Wizard)

新建的自定义向导工程如下图所示,主要包含四个文件夹(都在START_PATH目录中):htmlimagescriptstemplateshtml目录存放着作为UIHTML文件;images目录存放着UI所使用的图片文件;scripts目录存放着用于控制向导行为的脚本文件;而templates目录存放着向导用来产生输出的模板文件。

 

 

VS自定义工程向导开发(Custom Wizard)

新建向导工程完成后,再次new Project就会出现如下图所示的自定义工程向导。

 

VS自定义工程向导开发(Custom Wizard)

 

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

PROJECT_TEMPLATE_PATH: VC安装目录下的VCWizards目录

START_PATH:新建向导工程目录

用自定义的工程向导新建文件的工程布局如下图所示,工程目录中没有Header FilesResource Files

VS自定义工程向导开发(Custom Wizard)

第二步,添加Header FilesResource 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;

    }

}

 

效果图如下:

 

VS自定义工程向导开发(Custom Wizard)

第三步,在自定义向导工程中添加自定义类,目的是在用自定义工程向导生成的工程中能出现自定义的类。

添加方法:

右击Template Files添加类,如下图所示

VS自定义工程向导开发(Custom Wizard)

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

Templates.inf文件,在里面添加类的头文件和源文件,如下图所示:

VS自定义工程向导开发(Custom Wizard)

最后,打开文件所在目录,将类的头文件源文件移动到Templates\1033目录下,如下图所示:

VS自定义工程向导开发(Custom Wizard)

此时,新建工程,在工程目录下就有了类的头文件和源文件,如下图所示,

VS自定义工程向导开发(Custom Wizard)

第四步,把类的头文件放在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;

    }

}

效果如下图所示,

VS自定义工程向导开发(Custom Wizard)

第五步,就是修改类,得到所需的模板类了,如果需要类名和工程名一致的话,做如下更改:

VS自定义工程向导开发(Custom Wizard)

VS自定义工程向导开发(Custom Wizard)

注意宏[!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);

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

重要文件讲解:

default.js

templates.inf

default.vcxproj

.vsz

.vsdir