使用CWebBrowser2 如何去掉滚动条

petewong 2012-11-07 07:01:11
使用CWebBrowser2 显示网页
但有些网页过大时,会自动加个滚动条
我想去掉这个滚动条,要怎么办啊

在网上找了好多,一般就是说在OnDocumentCompleteExplorer中处理一个BODY属性
Put_Scroll(L"no");这样
我都试过了 没有用的啊

我猜想OnDocumentCompleteExplorer是不是已经显示完网页了,这时再处理已经没用了,具体不太了解。

各位大大,要怎么弄啊!~~
...全文
3040 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
云满笔记 2014-07-21
  • 打赏
  • 举报
回复
我也遇到这个问题 怎么解决啊
alang512 2013-09-23
  • 打赏
  • 举报
回复
http://blog.163.com/wenxianliang08@126/album/#m=2&aid=212945449&pid=8389201607 楼主,是不是要实现这种效果,当初我也是遇到这种问题,后来又解决了。
spotatoes 2013-04-09
  • 打赏
  • 举报
回复
hey,boy,code is here,maybe can help you

//.h
HRESULT  OnGetHostInfo(DOCHOSTUIINFO* dc);
//.cpp
HRESULT  CChildView::OnGetHostInfo(DOCHOSTUIINFO* dc)
{
	dc->dwFlags |= DOCHOSTUIFLAG_SCROLL_NO | DOCHOSTUIFLAG_NO3DBORDER;
	return S_OK;
}
petewong 2013-02-06
  • 打赏
  • 举报
回复
引用 13 楼 gym267164307 的回复:
你在BeforeNavigate2Explorer1事件里用过吗?
试过 也没有用啊
petewong 2013-02-06
  • 打赏
  • 举报
回复
引用 12 楼 proad 的回复:
我处理过此问题,解决办法就是用<body scroll="no">的方式, 如果html网页不是自己的,只能用HRESULT IHTMLBodyElement::put_scroll(BSTR v); //no
我用的就是put_scroll 不管用啊  是在DocumentCompleteExplorer事件里吧
gym267164307 2013-01-09
  • 打赏
  • 举报
回复
你在BeforeNavigate2Explorer1事件里用过吗?
proad 2012-11-27
  • 打赏
  • 举报
回复
我处理过此问题,解决办法就是用<body scroll="no">的方式, 如果html网页不是自己的,只能用HRESULT IHTMLBodyElement::put_scroll(BSTR v); //no
zhousitiaoda 2012-11-08
  • 打赏
  • 举报
回复
打个断点看进去了没
petewong 2012-11-08
  • 打赏
  • 举报
回复
通过调试 发面 GetHostInfo 是被执行了的 可是没有效果
petewong 2012-11-08
  • 打赏
  • 举报
回复


void CWebDlg::DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL)
{
	// TODO: 在此处添加消息处理程序代码

	IHTMLDocument2   *phtmldoc2   =   NULL;   
	IHTMLElement   *phtmlElement   =   NULL;   
	IDispatch   *pdisp   =   NULL;   
	pdisp   =   m_explorer.get_Document();   
	if   (pdisp   !=   NULL)   
	{   
		pdisp->QueryInterface(IID_IHTMLDocument2,   (void**)&phtmldoc2);
		
		ICustomDoc   *m_spCustDoc; 
		phtmldoc2->QueryInterface(IID_ICustomDoc,(void**)&m_spCustDoc);

		TDocHostUIHandlerImpl *FDocHostUIHandler = new   TDocHostUIHandlerImpl(); 


		m_spCustDoc-> SetUIHandler(FDocHostUIHandler); 


		pdisp->Release();   
	}  
 
petewong 2012-11-08
  • 打赏
  • 举报
回复
引用 3 楼 zhousitiaoda 的回复:
IDocHostUIHandler::GetHostInfo 去掉 DOCHOSTUIFLAG_SCROLL_NO = 0x00000008这个属性
我如下操作: 定义类TDocHostUIHandlerImpl class TDocHostUIHandlerImpl : public IDocHostUIHandler 重载 STDMETHODIMP TDocHostUIHandlerImpl::GetHostInfo(DOCHOSTUIINFO *pInfo) { pInfo-> dwFlags = pInfo-> dwFlags | DOCHOSTUIFLAG_SCROLL_NO;//加上 //pInfo-> dwFlags = pInfo-> dwFlags & ~DOCHOSTUIFLAG_SCROLL_NO;//去掉 //以上两个都试过 return S_OK; } 响应 void CWebDlg::DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL) { // TODO: 在此处添加消息处理程序代码 IHTMLDocument2 *phtmldoc2 = NULL; IHTMLElement *phtmlElement = NULL; IDispatch *pdisp = NULL; pdisp = m_explorer.get_Document(); if (pdisp != NULL) { pdisp->QueryInterface(IID_IHTMLDocument2, (void**)&phtmldoc2); ICustomDoc *m_spCustDoc; phtmldoc2->QueryInterface(IID_ICustomDoc,(void**)&m_spCustDoc); if(g_FDocHostUIHandler == NULL) g_FDocHostUIHandler = new TDocHostUIHandlerImpl(); m_spCustDoc-> SetUIHandler(FDocHostUIHandler); pdisp->Release(); } } 经过以上过程 仍然不行 哪里不对吗?
petewong 2012-11-08
  • 打赏
  • 举报
回复
引用 2 楼 oyljerry 的回复:
http://bbs.csdn.net/topics/250013178
我在CWebBrowser2中 写了消息响应WM_SIZE,但通过调试,并没有执行到该事件 想想也时,我通过一个按钮 调用的 Navigate(_T("Http://www.baidu.com"),NULL,NULL,NULL,NULL); 在这个过程中 控件本身 并没有发生 尺寸变化,所以,是应该不会响应这个消息的吧
petewong 2012-11-08
  • 打赏
  • 举报
回复
引用 3 楼 zhousitiaoda 的回复:
IDocHostUIHandler::GetHostInfo 去掉 DOCHOSTUIFLAG_SCROLL_NO = 0x00000008这个属性
之前也看到有人说 用这个 请问下 你说的这个 怎么用在CWebBrowser2 中 谢谢……。
zhousitiaoda 2012-11-08
  • 打赏
  • 举报
回复
IDocHostUIHandler::GetHostInfo 去掉 DOCHOSTUIFLAG_SCROLL_NO = 0x00000008这个属性
oyljerry 2012-11-08
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/250013178
petewong 2012-11-08
  • 打赏
  • 举报
回复
引用 10 楼 zhousitiaoda 的回复:
打个断点看进去了没
调试是执行了的 ,参数值也改了,但还是有滚动条 我是在DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL) 这里处理的 这样对吧……前面有我的简单实现过程
petewong 2012-11-07
  • 打赏
  • 举报
回复
源码如下:

void CWebDlg::DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL)
{
	// TODO: 在此处添加消息处理程序代码

	IHTMLDocument2   *phtmldoc2   =   NULL;   
	IHTMLElement   *phtmlElement   =   NULL;   
	IDispatch   *pdisp   =   NULL;   
	pdisp   =   m_explorer.get_Document();   
	if   (pdisp   !=   NULL)   
	{   
		pdisp->QueryInterface(IID_IHTMLDocument2,   (void**)&phtmldoc2);
		pdisp->Release();   
	}  

	if   (phtmldoc2   !=   NULL)   
	{   
		phtmldoc2->get_body(&phtmlElement);   
		phtmldoc2->Release();   
	}  

	if   (phtmlElement   !=   NULL)
	{
		IHTMLBodyElement *phtmlbody = NULL;
		phtmlElement->QueryInterface(IID_IHTMLBodyElement, (void**)&phtmlbody);   
		if   (phtmlbody != NULL)
		{   
			phtmlbody->put_scroll(L"no");   
			phtmlbody->Release();   
			phtmlElement->Release();   
		}   
	}

	m_explorer.Refresh();
}

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧