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

问题描述:

我有,我加了web browser control(封装Internet Explorer引擎。)下面的代码的目标是(暂时)从该控件中删除滚动条和窗口边框的MFC对话框窗口(调用IViewObject::Draw。)如何隐藏显示HTML5标记的Web浏览器控件(IE)的滚动条和窗口边框?

所以我做的:

//'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

尝试在HTML的“

”中添加“'。它有帮助吗? – Steeve
+0

@Steeve:谢谢。它解决了这个问题,但创建了新的(不相关的)问题。你能解释一下这个设置对这些API调用的影响吗? – c00000fd

+0

如何使用0调用IHTMLStyle :: borderWidth? –

我读this文章,那里说:

Web浏览器控件是 - 默认 - 永久地在IE 7的渲染模式。尽管我们现在可以使用IE 11和合理的HTML5兼容浏览器,但默认情况下,Web浏览器控件始终使用IE 7渲染引擎。这是因为ActiveX控件的原始版本使用了这种模式,并且为了向后兼容,Control继续使用这种过时的,非常不友好的默认设置。

一种解决方法,这是添加

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

在HTML的<head>,强制使用了最新的IE渲染引擎,从而使其“兼容”与HTML5网页。