Rover12421's Blog

The End.

VS2008 自定义DialogBased Application向导<二>

第二步,创建空向导。

文件–新建–Visual C++-–自定义向导image 我命名为 DialogBased Application 。在弹出对话框点下一步。

image

这里,因为我们不需要交互操作,也不需要弹出什么提示,选择界面什么的,就不选择 “用户界面”。然后完成。

image

只有简单的几个文件。制作向导最关键的是default.js文件和Templates.inf文件。创建好以后,在“新建–项目–向导”里就能看到这个向导了

image

现在这个向导什么事也不能。下一步再教大家制作一个功能完善的向导。这节很简单,就说一些相关知识,以减少下节的负担。

首先看下怎么向导向导说明。就是上图中位于名称上方的“TODO:向导说明。”这个需要在vsdir文件修改。打开DialogBased Application.vsdir文件,只有简单的一行:

DialogBased Application.vsz| |DialogBased Application|1|TODO: 向导说明。| |6777| |DialogBased Application

大家一定看到了“TODO: 向导说明。”这句话吧,我先来修改这句话,改成“DialogBased Application. By ”。保存,然后新建项目选择我们刚才创建的向导,是不是已经改过来了?如果以前创建过,可能这里并不能看出来。

关于vsdir文件,大家也可以参考MSDN,下面贴下MSDN上的一些说明,大家看看就行了。

可为 VSDir 文件中的每个记录指定下列字段:

字段

含义

RelPathName

必需。向导的 .vsz 文件的名称(如 MyWizard.vsz),此文件与 Visual Studio 安装目录有关。

{clsidPackage}

可选。表示产品的 GUID,该产品(如 Visual C++)带有的 DLL 中包含本地化资源。通常,对于符合第三方向导的 VSDir 文件,此字段为空。

LocalizedName

可选。这是向导或模板的可本地化的名称以及出现在“添加项”对话框中的名称。它可以是字符串或 #ResID 形式的资源标识符。

SortPriority

必需。表示向导的排序顺序和相对优先级的整数,1 为最高。例如,如果此项为“1”,那么它出现在其他 1 之后和所有 2 或更低级别之前。

说明

必需。当选定项后,将在“添加项”对话框中显示的模板或向导的可本地化说明。它可以是字符串或 #ResID 形式的资源标识符。仅应用于模板文件,不应用于文件夹。

DLLPath 或 {clsidPackage}

必需。指定到 DLL 或 EXE 文件的完整路径,或产品的 GUID,该产品所带的 .dll 文件包含要为向导加载的图标。该图标使用给定的 IconResourceId 作为 DLL/EXE 文件外部的资源加载。此设置重写图标位置的 {clsidPackage}(如果已指定)。仅应用于模板文件,不应用于文件夹。

IconResourceId

可选。DLL 文件内确定要显示的图标的资源标识符。如果未定义图标,环境用默认图标替代与该项具有相同扩展名的文件。仅应用于模板文件,不应用于文件夹。

Flags

可选。请参见下面的 Flags 说明和表。仅应用于模板文件,不应用于文件夹。

SuggestedBaseName

必需。在对话框的“名称”字段中显示的向导的默认名称。它是字符串或 #ResID 形式的资源标识符。如果该名称不是唯一的,那么环境将为该名称追加一个整数。例如,MyFile.aspx 可能更改为 MyFile1.aspx。如果未提供名称,那么使用“Project”。仅应用于模板文件,不应用于文件夹。

说明 任何没有有含义的数据的非必选字段应包含零 (0) 作为占位符。
如果未提供本地化名称,则使用相对路径。
如果未定义图标,则 IDE 用该扩展名替换文件的默认图标。
如果未提供建议的基名称,则使用“Project”。
Flags
一组用于启用或禁用“添加项”对话框中的“名称”和“位置”字段的位标志。也就是说,当用户从“添加”菜单中选择“添加新项”时,项目将决定名称和位置是否显示在“模板”窗格上,而标志将决定名称和位置是否可由用户使用。
将 Flags 的值设置为各个值的和。即 33 等于 VSDIRFLAG_NonLocalTemplate | VSDIRITEM_DisableLocationField。

<th>
  <p>
    十进制值
  </p>
</th>

<th width="296">
  <p>
    Description
  </p>
</th>

<td>
  <p>
    1
  </p>
</td>

<td width="296">
  <p>
    使用非本地用户界面行为和保存机制。
  </p>
</td>

<td>
  <p>
    2
  </p>
</td>

<td width="296">
  <p>
    创建空白(空)解决方案。不创建项目。
  </p>
</td>

<td>
  <p>
    4
  </p>
</td>

<td width="296">
  <p>
    对此项目或项禁用“浏览”按钮。
  </p>
</td>

<td>
  <p>
    8
  </p>
</td>

<td width="296">
  <p>
    不将默认扩展名追加到为项提供的名称中。(此设置对项目无效。)
  </p>
</td>

<td>
  <p>
    32
  </p>
</td>

<td width="296">
  <p>
    禁用此项目或项的位置字段。
  </p>
</td>

<td>
  <p>
    4096
  </p>
</td>

<td width="296">
  <p>
    不用有效的名称初始化此项目或项的名称字段。
  </p>
</td>

<td>
  <p>
    8192
  </p>
</td>

<td width="296">
  <p>
    禁用此项目或项的名称字段。
  </p>
</td>

标志名称

VSDIRFLAG_NonLocalTemplate

VSDIRFLAG_BlankSolution

VSDIRFLAG_DisableBrowseButton

VSDIRFLAG_DontAddDefExtension

VSDIRFLAG_DisableLocationField

VSDIRFLAG_DontInitNameField

VSDIRFLAG_DisableNameField

接着说下Default.js ,具体也参考MSDN

默认情况下,项目的 Default.js 文件包含以下函数:
AddConfig
添加项目的配置。可以提供编译器和链接器设置。
AddFilesToCustomProj
当用户单击“完成”时,将指定的文件添加到项目中。
AddFilters
当用户单击“完成”时,将指定的源筛选器添加到项目中。
CreateCustomProject
当用户单击“完成”时,在指定位置创建项目。
CreateCustomInfFile
创建项目的 Templates.inf 文件。
DelFile
删除指定的文件。
GetTargetName
获取指定文件的名称。
OnFinish
当用户单击“完成”时,由向导调用以创建项目、添加文件和筛选器、呈现模板以及设置配置。
PchSettings
设置预编译头设置。有关更多信息,请参见 Common.js 参考中的 SetCommonPchSettings。

下节我们只需要修改AddFilters函数,来把文件分别添加到源文件,头文件和资源文件里。还需要修改GetTargetName函数,用来修改项目的文件名,使每次创建的项目的文件名都不一样。

差不多了解这些就行。

Comments