15,980
社区成员




STDMETHOD(Invoke)(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pdispparams, VARIANT * pVarResult, EXCEPINFO * pExcepInfo, UINT * puArgErr)
{
if (dispIdMember==1014) // 滚动条事件(1014是我调试得到的,有没有预先定义好的宏?)
{
HRESULT hr;
IDispatch *pdisp;
hr = WebBrowser1->get_Document(&pdisp);
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);
long top;
IHTMLTextContainer *pCont;
pBody->QueryInterface(IID_IHTMLTextContainer,(LPVOID*)(&pCont));
assert(pCont);
// 获得滚动条位置,从顶端开始
long scroll_top;
if(FAILED(pCont->get_scrollTop( &scroll_top )));
TRACE(_T(" 滚动条滑块的位置: %d\n"),scroll_top); //滑块相对于top 的位置
m_pScrollBar->UpdataThumbPos(scroll_top); // 更新滑块位置
pBody->Release();
pCont->Release();
pDocument->Release();
pdisp->Release();
}
return S_OK;
}