我有一个MFC对话框窗口,我在其中添加了web browser control(它封装了Internet Explorer
引擎。)以下代码的目标是(暂时)从该控件中删除滚动条和窗口边框(到致电IViewObject::Draw。)
所以我这样做:
//'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"));
如果我将Web控件中显示的HTML定义为:
,则此方法有效<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
但如果我将其定义为HTML5:
<!DOCTYPE HTML>
上面的代码没有做任何事情。
知道我应该更改什么才能使其与HTML5标记一起使用?
答案 0 :(得分:1)
我正在阅读this文章,其中说:
Web浏览器控件 - 默认情况下 - 永久停留在IE 7渲染模式下。即使我们现在可以使用IE 11和合理的HTML5兼容浏览器,但Web浏览器控件默认情况下始终使用IE 7渲染引擎。这是因为ActiveX控件的原始版本使用了这种模式,并且为了向后兼容性,Control继续这种过时且非常HTML5不友好的默认值。
解决方法是添加
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
在HTML的<head>
中,强制使用最新的IE渲染引擎,从而使其兼容&#34; HTML5页面。