三、 包模板中的文件 当从“VS Integration Package”中创建一个包工程时,包创建向导将自动地把若干新文件添加到你的工程;如果你创建一个插件的话,添加的文件还要多。大多数这些文件包含一些在代码中加了注释的文档或背景信息。下面是你的工程可能包括的一个文件列表。注意,其中一些文件特定于某些类型的包。
文件名 |
文件菜单 |
工具窗口 |
定制编辑器 |
描述 |
Properties/AssemblyInfo.cs |
X |
X |
X |
属性,例如标题、描述、版权和版本 |
CtcComponents/Guids.h |
X |
X |
|
唯一命令标识符列表 |
CtcComponents/PkgCmdID.h |
X |
X |
|
用于定义命令条的命令ID |
CtcComponents/Resource.h |
X |
X |
|
资源ID |
CtcComponents/VsPackage1.ctc |
X |
X |
|
实际布局和命令类型 |
Resources/Images_24bit.bmp |
|
X |
|
真彩色工具图标集,其中一种颜色用于透明度表示
|
Resources/Images_32bit.bmp |
X |
X |
|
真彩色工具图标集,含有一个8位的alpha通道
|
Resources/Package.ico |
X |
X |
X |
“Help->About”对话框的示例图标 |
Resources/File.ico |
X |
|
|
示例文件图标
|
EditorFactory.cs |
X |
|
|
相应于“editor factory”的起始代码 |
EditorPane.cs |
X |
|
|
所有你需要定制一个编辑器格子的起始代码 |
Guids.cs |
X |
X |
X |
一个你的GUID列表,例如相应于包和命令集(必须匹配Guids.h) |
Key.snk |
X |
X |
X |
签名程序集的密钥文件 |
MyEditor.cs(名字可能有所不同) |
X |
|
|
实际的Rich Text Box,用作你的编辑器;在EditorPane.cs中实例化 |
MyControl.cs |
X |
|
|
MyToolWindow的UI |
MyToolWindow.cs |
X |
|
|
你的工具窗口的起始代码;一个ToolWindowPane的子类 |
PkgCmdID.cs |
X |
X |
|
你的命令ID列表(必须匹配PkgCmdID.h) |
VsPkg.cs |
X |
X |
X |
实现你的包的核心代码 |
四、一个详细的定制编辑器和命令的例子 在这个例子中,我们不是把新功能添加到现有IDE,而是创建一个新的编辑器。所以,你实质上是在重建一个IDE的核心方面。
那么,为什么要创建编辑器呢?当你想提供一个开发者可以在其中管理新文件类型或是全新语言的定制工作空间时,你可以构建一个编辑器。为了说明你能够完成的各种任务,我们可以把编辑器划分为四个类型:
标准的基于文件的编辑器—一个通用编辑器,提供简单的文本编辑功能,并且包括基本功能,如删除和插入。
Visual Studio核心编辑器—与IDE使用的一样的编辑器;你可以在其中使用某种Visual Studio工程类型。
定制编辑器—它与你创建的一个定制工程类型一起工作,包括构建到你的工程中的任何独有特征。
外部编辑器—一个独立的编辑应用程序,如记事本,你可以从你的包中进行调用。
上面的可扩展性SDK发行中含有一个独立的帮助文件,其中包括一些优秀的创建各种编辑器教程。作为入门,下列步骤将向你介绍使用菜单命令创建一个定制编辑器的过程。其实,你有太多的自由工具可以使用,但篇幅所限,在此恕不详及。