IHTMLDocument2 :: get_body терпит неудачу в CHtmlView для IE 11

0

Мы столкнулись с простой, но критической проблемой: IHTMLDocument2 :: get_body работает в нашем встроенном браузере (CHtmlView) для IE7, но не в IE11. Мы действительно хотим начать использовать более новую версию, но сейчас это убийца.

Мы используем Visual Studio 2010. Нативный (неуправляемый) 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

до 11000 для нашего.exe, тогда elt == NULL (так терпит неудачу в тесте body.IsValid())

Если мы не установили ключ реестра или не установили ключ в 7000 (так что управление браузером - IE7), то он снова работает.

Помогите!

Теги:
internet-explorer
com

1 ответ

1

Роберт Алдвинкл дал мне ответ на форуме 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.
  • 0
    Можете ли вы дать ссылку на сообщение / ответ на форуме MSDN?
  • 0
    social.msdn.microsoft.com/Forums/windowsazure/en-US/...
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню