对于官方推出的Visual C++是目前Windows平台上***的C++集成开发环境之一,有大量的应用程序和软件都是使用它来开发出来的。VC的开发环境提供了强大的功能,为开发人员方便、快速、高效地开发应用给予了强有力的支持。
但是由于程序员各有各的特点和习惯,所以还可能会有很多对编程开发环境不同的需要。VC的IDE集成开发环境充分考虑到了这一点,专门提供了对开发环境进行扩展的功能,使得开发员可以根据需要,通过一些编程开发来增强VC开发环境本身的功能。
Visual C++自动化机制
在使用VC来进行开发的时候,在VC的集成开发环境里可以手工进行很多操作,例如:使用菜单命令来打开一个项目、修改源文件、保存文件,然后编译连接得到可执行的文件等等。这些操作大部分都是例行的、重复多次进行的。 #t#
VC提供了一种Automation自动化(来自以前的OLE自动化)的扩展机制。VC的开发者可以通过开发VBScript宏或者插件,让IDE来自动执行一些操作。好处是显然的:可以大大缩短这些操作的时间,而且还可以避免在手工操作可能出现的一些错误,如遗漏、键入错误等等。VBScript宏是使用VBScript语言写的一些程序,而插件则是使用VC或者Visual Basic开发的COM构件。
我们还可以使用VBScript宏和插件来对VC本身的界面进行美化、改造,例如为VC的窗口加上页签(与Delphi的界面类似)等等。
在宏或者插件里,Visual C++的集成开发环境本身以及它的各个部件都可以作为对象来进行操作。例如,通过操作与项目的文件对应的对象,可以对某个文件进行打开、编辑和关闭等操作。类似的,操作与IDE中的窗口对应的对象,可以激活一个窗口、改变窗口的大小等等。
一个对象可以是集成开发环境的一个部件,或者一组相关的部件。例如,一个Document文件对象表示一个打开的文件,而Documents对象则表示所有打开的文件。类似,一个Window窗口对象表示一个打开的窗口,而Windows对象表示所有打开的窗口。Documents和Windows对象称为集合对象,它们包含了相关的一组对象。
每一个IDE环境的对象都实现了一个双向的接口,提供了大量的方法、属性和事件,在开发VBScript宏和插件的时候需要使用这些方法、属性和事件来操作这些对象。同时,每一个对象为Automation机制实现了一个IDispatch接口和一个COM接口,来支持对对象成员(属性、方法和事件)的访问。
为了更好地操作集成开发环境的对象,必须知道这些对象之间的关系。对象之间有一个层次包含的关系。Application对象是最顶层的,其它的对象都是从属于它的。有了这个关系,就可以使用Application对象的属性和方法来直接访问它的所有下属对象啦!VC集成开发环境的对象以及它们之间的包含关系如下:
- Application
- Application(Application也可以包含自己)
- Projects
- Project
- Configurations
- Configuration
- Configurations(循环)
- Documents
- Document
- Window(一般窗口)
- TextDocument
- TextSelection
- TextWindow
- Window(文本窗口)
- TextEditor
- Windows
- Debugger
- Breakpoints
- Breakpoint
例如,Breakpoints对象有一个Breakpoint对象作为它的属性之一,也就是说Breakpoints对象包含了一个或者多个Breakpoint对象。这样就可以通过一个对象的属性来访问它包含的所有下属对象。反过来,也可以通过一个对象的Parent属性来访问它所属的对象。
Visual C++这种环境的对象封装机制为我们开发VBScript宏和插件来扩展VC集成开发环境的功能提供了极大的方便。下面就让我们具体看看怎样来开发VBScript宏和插件,利用VC的Automation机制,增强Visual C++开发环境的功能,以方便自己日常的开发工作。