接口名称末尾的数字是什么意思?我看到IHTMLDocument3-7
没有成员(参见 #5 的示例),并且8
有与手势相关的成员。数字是从 Windows 版本派生的吗?
4 回答
这是公共 COM 接口的一般特性。
如果你想要向后兼容,你永远不想改变一个发布的界面,因为这意味着人们为 IE 6 编写的所有代码都停止与 IE 7 一起工作,他们所有的客户都会对他们生气,他们会生气在你。
因此,如果 IE 5 添加了需要公开的新功能,而不是更改IHTMLDocument
,您可以创建一个新接口,并使 IE5 支持这两者(通过继承QueryInterface
、 或更明确的机制)。当 IE 7.0.2 或 IE 8 或 Win XP 或任何添加更多新功能的版本时,您会创建另一个。等等。
虽然 MS 可以提出描述性后缀而不仅仅是序号,但这可能更令人困惑而不是有用。所以, IHTMLDocument2
, IHTMLDocument3
, 等等是名字。它们没有任何意义,除了它们被添加的顺序。
接口名称末尾的数字是什么意思?
这是版本控制 COM 接口的标准约定。IXXX2 扩展了 IXXX 的新功能。IXXX3 扩展了 IXXX2 的新功能,等等。这允许客户端在新版本发布时使用旧功能而不会中断,并在需要时使用新功能,甚至在尝试调用它们之前检查这些功能是否可用。
我看到 IHTMLDocument3-7 没有成员
你是从哪里得到这个想法的?看看他们的实际定义。它们将许多新成员从一个界面暴露到下一个界面。
不 - 它只是表示界面的不同版本。它与 Windows 版本无关(就此而言,与 MSHTML 版本几乎/无关):
截至http://msdn.microsoft.com/en-us/library/aa752541(v=vs.85).aspx
我们可以看到:
IHTMLDocument3 接口继承自 IDispatch 接口,但没有其他成员。
it can bee little confusing for newcomers to interface world.