自动化使您的应用程序能够操作在另一个应用程序中实现的对象,或公开对象,以便可以对其进行操作。 自动化服务器是向其他应用程序(称为 自动化客户端)公开可编程对象(称为自动化对象)的应用程序。 自动化服务器有时称为自动化组件。
通过公开自动化对象,客户端可以通过直接访问服务器提供的对象和功能来自动执行某些过程。 当应用程序提供对其他应用程序有用的功能时,以这种方式公开对象是有益的。 例如,字处理器可能会公开其拼写检查功能,以便其他程序可以使用它。 因此,公开对象使供应商能够通过使用其他应用程序的现成功能来改进其应用程序的功能。
这些自动化对象具有属性和方法作为其外部接口。 属性是自动化对象的命名属性。 属性类似于C++类的数据成员。 方法是处理自动化对象的函数。 方法类似于C++类的公共成员函数。
注释
尽管属性类似于C++数据成员,但它们不可直接访问。 若要提供透明访问,请在自动化对象中设置一个内部变量,其中包含一对 get/set 成员函数来访问它们。
通过公开应用程序功能,通过通用、定义完善的接口,自动化可以采用单个常规编程语言(如 Microsoft Visual Basic)生成应用程序,而不是以各种特定于应用程序的宏语言生成应用程序。
对自动化服务器的支持
视觉C++和 MFC 框架为自动化服务器提供广泛的支持。 它们处理了创建自动化服务器所涉及的大部分工作,从而让您将精力放在应用程序的功能上。
用于支持自动化的框架的主要机制是调度映射,即扩展到公开 OLE 的方法和属性所需的声明和调用中的一组宏。 典型的调度映射如下所示:
BEGIN_DISPATCH_MAP(CMyServerDoc, COleServerDoc)
DISP_PROPERTY(CMyServerDoc, "Msg", m_strMsg, VT_BSTR)
DISP_FUNCTION(CMyServerDoc, "SetDirty", SetDirty, VT_EMPTY, VTS_I4)
END_DISPATCH_MAP()
类向导和类视图有助于维护调度映射。 向类添加新的方法或属性时,Visual Studio 会添加一个对应的 DISP_FUNCTION
或 DISP_PROPERTY
宏,其中包含指示类名、方法或属性的外部名称和内部名称以及数据类型的参数。
“ 添加类 ”对话框还简化了自动化类的声明及其属性和作的管理。 使用“添加类”对话框向项目添加类时,请指定其基类。 如果基类允许 Automation,则“添加类”对话框将显示用于指定新类是否应支持 Automation 的控件、是否为“可由 OLE 创建”(也就是说,是否可以根据 COM 客户端的请求创建该类的对象),以及供 COM 客户端使用的外部名称。
然后,“ 添加类 ”对话框创建类声明,包括指定的 OLE 功能的相应宏。 它还添加了用于实现类成员函数的框架代码。
MFC 应用程序向导简化了使自动化服务器应用程序脱离地面所涉及的步骤。 如果在“高级功能”页面中选择“自动化”复选框,MFC 应用程序向导会向你的应用程序的InitInstance
函数中添加必要的调用,以注册自动化对象并将应用程序作为自动化服务器运行。