如何隐藏显示HTML5标记的Web浏览器控件(IE)的滚动条和窗口边框?

时间:2016-12-22 10:21:30

标签: c++ windows internet-explorer mfc activex

我有一个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标记一起使用?

1 个答案:

答案 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页面。