请问怎样捕捉WebBrowser页面的滚动条滚动事件?

iamluda 2008-03-24 09:56:08
我在基于对话框的程序中,放了一个webbrowers控件,如何捕捉WebBrowser页面的滚动条滚动事件,我知道要捕获ISPID_HTMLWINDOWEVENTS2_ONSCROLL 事件,但我不知道如何在基于对话框的程序中,编写捕获事件的代码?
...全文
489 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
scq2099yt 2008-03-27
  • 打赏
  • 举报
回复
增加NavigateComplete2消息,在该消息中处理滚动后需要做的事情
iamluda 2008-03-26
  • 打赏
  • 举报
回复
HTMLWindowEvents2::onscroll Event
iamluda 2008-03-26
  • 打赏
  • 举报
回复
为了捕捉webbrowers 的滚动事件 ,他的接收期的函数是下面的那一个,
HRESULT IHTMLTextContainer::get_onscroll(VARIANT *p);
HRESULT IHTMLTextContainer::put_onscroll(VARIANT v);

对于get_onscroll这个函数的IID是多少?
iamluda 2008-03-25
  • 打赏
  • 举报
回复
在对话框中,捕捉webbrowers的事件步骤如下:
用OnDocumentComplete 方法来举例

1. 在 DLG派生类头文件定义OnDocumentComplete 方法:
afx_msg void OnDocumentComplete(LPDISPATCH lpDisp,
VARIANT FAR* URL);

2. 在 DLG派生类头文件中声明事件接收器:DECLARE_EVENTSINK_MAP()


3. 在 DLG派生类实现文件 (.cpp) 实现事件接收映射:
BEGIN_EVENTSINK_MAP(CXXXXDlg, CDialog)
ON_EVENT(CXXXXDlg, IDC_EXPLORER1, 259 /* DocumentComplete */,
OnDocumentComplete, VTS_DISPATCH VTS_PVARIANT)
END_EVENTSINK_MAP()

4. 在 DLG派生类实现文件 (.cpp) 实现 OnDocumentComplete 方法:
void CWBTstView::OnDocumentComplete(LPDISPATCH lpDisp,
VARIANT FAR* URL)
{
IUnknown* pUnk;
LPDISPATCH lpWBDisp;
HRESULT hr;
pUnk = m_webBrowser.GetControlUnknown();
ASSERT(pUnk);
hr = pUnk->QueryInterface(IID_IDispatch, (void**)&lpWBDisp);
ASSERT(SUCCEEDED(hr));
if (lpDisp == lpWBDisp )
{
// Top-level Window object, so document has been loaded
TRACE("网页已全部下载完毕\n");
}
lpWBDisp->Release();
}

我的问题是:对于webbrowers 的滚动事件,该如何编写代码,webbrowers的滚动事件的接口是那一个?接口的ID是多少? 请大家帮帮忙!



wshcdr 2008-03-24
  • 打赏
  • 举报
回复
首先需要挂接连接点
AfxConnectionAdvise(...);

然后
BEGIN_DISPATCH_MAP
DISP_FUNCTION_ID
xxxx
END_DISPATCH_MAP
在这里指定接受的事件函数,并实现该函数

关键的步骤如上

iamluda 2008-03-24
  • 打赏
  • 举报
回复
在OnDocumentComplete 中用 AfxConnectionAdvise 的方法挂接上了IHTMLWindow2 并且得到DISPID_HTMLWINDOWEVENTS2_ONSCROLL 的事件函数。

这句话如何理解
iamluda 2008-03-24
  • 打赏
  • 举报
回复
能否这样理解,就是如何在头文件中声明事件,如何在实现文件 (.cpp) 中实现事件映射和实现事件的方法,
iamluda 2008-03-24
  • 打赏
  • 举报
回复
怎么样通过DWebBrowserEvents2接口获得它的IHTMLWindow2接口

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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