2016-12-22 2 views
0

У меня есть диалоговое окно MFC, где я добавил web browser control (который инкапсулирует Internet Explorer двигателя.) Цель следующего кода (временно) удалить полосы прокрутки и границы окна от этого элемента управления (для вызова IViewObject::Draw.)Как скрыть полосы прокрутки и границы окна для управления веб-браузером (IE), который отображает разметку HTML5?

Так я:

//'m_browser' = is a web browser control of type `CExplorer1` 
IDispatch* pHtmlDoc = m_browser.get_Document(); 

CComPtr<IHTMLDocument2> pHtmlDocument2; 
pHtmlDoc->QueryInterface(IID_IHTMLDocument2, (void**)&pHtmlDocument2); 

CComPtr<IHTMLElement> pBody; 
pHtmlDocument2->get_body(&pBody); 

CComPtr<IHTMLStyle> pStyle; 
pBody->get_style(&pStyle); 

//Remove borders 
pStyle->put_borderStyle(CComBSTR("none")); 

//Remove scrollbars 
pBody->setAttribute(CComBSTR(L"scroll"), CComVariant(L"no")); 

Этот подход работает, если я определить HTML, который отображается в веб-управления, как:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 

, но если я определяю его как HTML5:

<!DOCTYPE HTML> 

код выше ничего не делает.

Любая идея, что я должен изменить, чтобы она работала с разметкой HTML5?

+1

Попробуйте добавить '' в '' HTML. Помогает ли это? – Steeve

+0

@Steeve: Спасибо. Он решил эту проблему, но создал новые (не связанные). Можете ли вы объяснить, как именно этот параметр влияет на эти вызовы API? – c00000fd

+0

как насчет вызова IHTMLStyle :: borderWidth с 0? –

ответ

1

Я читал this статью, в которой он говорит:

Веб-браузер управления является - по умолчанию - постоянно застрял в режиме рендеринга IE 7. Несмотря на то, что теперь мы работаем с IE 11 и достаточно совместимым с HTML5 браузером, система Web Browser Control по умолчанию использует движок рендеринга IE 7. Это связано с тем, что исходные версии элемента управления ActiveX использовали этот режим и для обратной совместимости Control продолжает это устаревшее и очень неактивное значение по умолчанию для HTML5.

Обойти это добавить

<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 

в <head> в HTML, заставляя последний IE рендеринга будет использоваться, и, таким образом, делая его «совместимым» со страницами HTML5.

Смежные вопросы