摘要
ActiveX 控件必须实现 IProvideClassInfo 或 IProvideClassInfo2 接口,以启用事件处理 Web 页上。Microsoft Internet Explorer 使用此接口获取控件的类型库和确定可用的事件集。
更多信息
使用一种脚本语言,如 VBScript 或 JavaScript,Web 页作者可以使用自动化调用方法/属性和处理 HTML < 对象 > 标记的页面上放置一个 ActiveX 控件的事件。为了支持此类事件处理 ActiveX 控件,它必须实现 IProvideClassInfo 或 IProvideClassInfo2 接口。Internet Explorer 查询这些接口上的控制,并实现时,如果调用 GetClassInfo() 方法来获取该控件的类型库。Internet Explorer 最初将 IProvideClassInfo2 查询控件,并且如果未实现,然后将 IProvideClassInfo.The IProvideClassInfo2 接口从 IProvideClassInfo 派生,并提供更多方法,GetGUID() 查询它返回一个对象的传出默认事件集的接口 ID。对于使用 Microsoft 基础类开发 ActiveX 控件,默认实现 IProvideClassInfo2 接口。对于使用 Microsoft Visual Basic 开发 ActiveX 控件,默认实现 IProvideClassInfo 接口。当使用 Microsoft 活动模板库 (ATL),版本 3.0,下面的精简控制 ATL 对象不默认实现 IProvideClassInfo2 接口:
-
简单的对象
-
Internet Explorer 对象
-
精简的控件
-
精简的复合控件
-
精简的 HTML 控件
您可以轻松添加事件处理的方法实现 IProvideClassInfo 接口的支持。这是 IProvideClassInfo2Impl 的默认 ATL 实现从派生的控件。
-
将以下行添加到派生列表:
public IProvideClassInfo2Impl<&CLSID_<object_name>, NULL, &LIBID_<project_name>Lib>
-
将以下行添加到您的 COM_MAP:
COM_INTERFACE_ENTRY(IProvideClassInfo) COM_INTERFACE_ENTRY(IProvideClassInfo2)
参考
有关活动模板库,实现 ActiveX 控件的详细信息,请参阅 Microsoft Visual C++ 联机文档。有关为 Microsoft Internet Explorer 开发基于 Web 的解决方案的详细信息,请访问下面的 Microsoft 网站:
http://msdn.microsoft.com/ie/ http://support.microsoft.com/iep(c) 微软公司 1999 年,保留所有权利。通过标记戴维斯,微软公司的贡献。