FAQ:如何访问WebBrowser的滚动条收藏
新一篇: 多层数据库开发三:创建多层应用程序 | 旧一篇: TEmbeddedwb的一个小bug
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script><script type="text/javascript"> google_ad_client="pub-6065469188450680"; google_ad_width=728; google_ad_height=90; google_ad_format="728x90_as"; google_ad_type="text_image"; google_ad_channel="7916807314"; </script><script style="display: none;" src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
问========================================
我使用webbrowser控件,但是想用自己的滚动条,但不知如何得到webbrowser中滚动条的长度,怎么办?谢谢!!
2004-10-24
答========================================
抱歉拖了很久才回复你的问题。
WebBrowser的滚动条不是一般的Windows滚动条,用GetScrollPos或GetScrollInfo等API是不能访问的。下面的代码演示了在VC中如何通过HTML接口来访问浏览器的滚动条。
HRESULT hr;
IDispatch *pDisp = GetHtmlDocument();
ASSERT( pDisp ); //if NULL, we failed
// 获得Html文档指针
IHTMLDocument2 *pDocument = NULL;
hr = pDisp->QueryInterface( IID_IHTMLDocument2, (void**)&pDocument );
ASSERT( SUCCEEDED( hr ) );
ASSERT( pDocument );
IHTMLElement *pBody = NULL;
hr = pDocument->get_body( &pBody );
ASSERT( SUCCEEDED( hr ) );
ASSERT( pBody );
// 从body获得IHTMLElement2接口指针,用以访问滚动条
IHTMLElement2 *pElement = NULL;
hr = pBody->QueryInterface(IID_IHTMLElement2,(void**)&pElement);
ASSERT(SUCCEEDED(hr));
ASSERT( pElement );
// 向下滚动100个像素
pElement->put_scrollTop( 100 );
// 获得滚动条高度
long scroll_height;
pElement->get_scrollHeight( &scroll_height );
// 获得滚动条宽度
long scroll_height;
pElement->get_scrollWidth( &scroll_width );
// 获得滚动条位置,从顶端开始
long scroll_top;
pElement->get_scrollTop( &scroll_top );