上下文:经过一些代码修改后,我的BHO无法在IE7上正常工作。
问题:我在IHTMLElement上为IHTMLElement5使用QueryInterface,结果为0x80004002(不支持此类接口(interface))。
我提醒过一段时间,Scripting Object Interfaces (MSHTML)上的MSDN文档将指出哪个版本的IE支持每个接口(interface)。情况不再如此。 IHTMLElement5 documentation说“带有SP2的Windows XP” ...我认为这是错误的,但是无论如何,现在我的问题是:
如果我想支持IE7并使用IHTMLElement5,如何使我的Visual Studio 2010 C++构建失败?
我用google和SO搜索了该主题,发现有一个#define _WIN32_IE可用于定位最低的特定IE版本。我的问题是,它没有任何改变,当我将宏设置为_WIN32_IE_IE70时,它们都可以正常编译
我在(C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Include \ mshtml.h)中搜索了字符串'_WIN32_IE',没有找到匹配项。这是否意味着在将宏设置为_WIN32_IE_IE70并在代码中使用IHTMLElement5时,您不会使构建失败?
最佳答案
IHTMLElement5 isn't supported on IE 7。仅IE 8支持此功能。XP支持IE 8,因此该文档正确无误。
不幸的是,_WIN32_IE不再有用。当Windows和IE更加紧密地结合在一起时,它很有用,但是实际上_WIN32_IE_60>将会公开所有将公开的API。