来源:www.cncfan.com | 2006-1-20 | (有3848人读过)
问========================================
我使用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_width; pElement->get_scrollWidth( &scroll_width );
// 获得滚动条位置,从顶端开始 long scroll_top; pElement->get_scrollTop( &scroll_top );
|