gpt4 book ai didi

c++ - IHTMLDocument2::get_body 在 IE 11 的 CHtmlView 中失败

转载 作者:行者123 更新时间:2023-11-28 07:04:07 24 4
gpt4 key购买 nike

我们遇到了一个简单但关键的问题:IHTMLDocument2::get_body 在我们的嵌入式浏览器 (CHtmlView) 中适用于 IE7,但不适用于 IE11。我们真的很想开始使用较新的版本,但现在这是一个 killer 。

我们使用 Visual Studio 2010。 native (非托管)C++。 32 位和 64 位版本都会出现问题。我不知道这从哪里开始失败(IE8?IE9?IE10?)。在我们尝试调用此函数之前,OnNavigateComplete2 已触发。

这是我们的代码,它已经为我们工作了很长时间:

ComPtr<IHTMLTxtRange> CHighlightHTML::GetRange(ComPtr<IHTMLDocument2> document)
{
ComPtr<IHTMLElement> elt;
ComPtr<IHTMLBodyElement> body;

if( SUCCEEDED(document->get_body(&elt.ReleaseGetValue())) )
body = elt;

if( body.IsValid() )
{
// Create a range from the entire body element.
ComPtr<IHTMLTxtRange> range;
CHECK_COM(body, createTextRange(&range.ReleaseGetValue()));
return range;
}
}

但是当我们设置注册表项时:HKCU/Software/Microsoft/Internet Explorer/Main/FeatureControl/FEATURE_BROWSER_EMULATION

对于我们的 .exe 为 11000,然后 elt == NULL(因此 body.IsValid() 测试失败)

如果我们没有设置注册表键值,或者将键值设置为7000(所以浏览器控件是IE7),那么它又可以工作了。

帮助!

最佳答案

Robert Aldwinckle 在 msdn 论坛上给了我答案。我需要将注册表值设置为 11001 而不是 11000:

11001 (0x2AF9   Internet Explorer 11. Webpages are displayed in IE11 edge mode, regardless of the !DOCTYPE directive.
11000 (0x2AF8) IE11. Webpages containing standards-based !DOCTYPE directives are displayed in IE11 edge mode. Default value for IE11.

关于c++ - IHTMLDocument2::get_body 在 IE 11 的 CHtmlView 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22023762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com