7

接口名称末尾的数字是什么意思?我看到IHTMLDocument3-7没有成员(参见 #5 的示例),并且8有与手势相关的成员。数字是从 Windows 版本派生的吗?

4

4 回答 4

20

这是公共 COM 接口的一般特性。

如果你想要向后兼容,你永远不想改变一个发布的界面,因为这意味着人们为 IE 6 编写的所有代码都停止与 IE 7 一起工作,他们所有的客户都会对他们生气,他们会生气在你。

因此,如果 IE 5 添加了需要公开的新功能,而不是更改IHTMLDocument,您可以创建一个新接口,并使 IE5 支持这两者(通过继承QueryInterface、 或更明确的机制)。当 IE 7.0.2 或 IE 8 或 Win XP 或任何添加更多新功能的版本时,您会创建另一个。等等。

虽然 MS 可以提出描述性后缀而不仅仅是序号,但这可能更令人困惑而不是有用。所以, IHTMLDocument2, IHTMLDocument3, 等等是名字。它们没有任何意义,除了它们被添加的顺序。

于 2013-01-01T07:38:52.070 回答
3

接口名称末尾的数字是什么意思?

这是版本控制 COM 接口的标准约定。IXXX2 扩展了 IXXX 的新功能。IXXX3 扩展了 IXXX2 的新功能,等等。这允许客户端在新版本发布时使用旧功能而不会中断,并在需要时使用新功能,甚至在尝试调用它们之前检查这些功能是否可用。

我看到 IHTMLDocument3-7 没有成员

你是从哪里得到这个想法的?看看他们的实际定义。它们将许多新成员从一个界面暴露到下一个界面。

于 2013-01-01T08:37:09.223 回答
2

不 - 它只是表示界面的不同版本。它与 Windows 版本无关(就此而言,与 MSHTML 版本几乎/无关):

于 2013-01-01T07:24:39.213 回答
1

截至http://msdn.microsoft.com/en-us/library/aa752541(v=vs.85).aspx

我们可以看到:

IHTMLDocument3 接口继承自 IDispatch 接口,但没有其他成员。

it can bee little confusing for newcomers to interface world.

于 2013-06-24T20:14:46.953 回答