CDHtmlDialog中怎样获得超链接点击事件?

eplanet 2008-01-10 05:19:08
CDHtmlDialog中怎样获得超链接点击事件?
接收到点击时间后,如何区别类型,例如页面跳转和文件下载等
还有怎么能知道页面跳转的目标是当前页还是新建页面

其实最终想做的是控制页面的超链接点击,使所有的页面都不会再弹出新的页面,而是不断的在同一个CDHtmlDialog中显示。还有就是在文件下载完成后,需要对下载的文件做一些后续处理。
...全文
408 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jameshooo 2008-01-10
  • 打赏
  • 举报
回复
使用宏来捕获事件:

class CYourDlg : public CDHtmlDialog; // 继承一个对话框
BEGIN_DHTML_EVENT_MAP(CYourDlg)
DHTML_EVENT_ONCLICK(_T("someanchor_id"), OnClick)
END_DHTML_EVENT_MAP()

HRESULT CYourDlg::OnClick(IHTMLElement *pElement) // 这是响应<a href="..." id="someanchor_id" target="_blank">超链接</a> 点击事件的处理函数
{
CComQIPtr<IHTMLAnchorElement> pAnchor(pElement);
pAnchor->get_protocol(); // 能获得该元素的协议类型,比如http、ftp、mailto……等等,你通过类型来判断是否下载
pAnchor->get_target(); // 能获取该元素点击后打开的目标窗口
return S_OK;
}


当然,可以接收DWebBrowserEvents2::NewWindow2事件,把参数Cancel设置成VARIANT_TRUE,将能阻止新窗口被打开,同时你执行Navigate在本窗口打开链接
oldmanzhao 2008-01-10
  • 打赏
  • 举报
回复
可以捕捉NewWindow事件。

3,056

社区成员

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

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