C++实现WebBrowser控件中对鼠标点击事件的监听,并获取所点击标签的超链接
2013-03-13 14:00
1751 查看
在查询资料之后,终于实现了如题功能。当然,在文章中对主要方法和思路做出解释,具体实现方法我用一个小例子做了介绍,下载链接:http://download.csdn.net/detail/ictwangbiao/5136738
主要步骤如下:
1、接收网页事件(参考资料)
要响应网页事件,需要实现IDispatch接口,并在其Invoke()方法中处理收到的消息。对于MFC,因为CCmdTarget类已经实现了该接口,所以只需要继承CCmdTarget并结合相关宏就能简单做到了。
注意1:在该类中,一定要在初始化函数中激活IDisptach接口,使用函数EnableAutomation()函数,实际上,初始化函数也只需要做这项工作就可以了。
注意2:该类中对点击事件响应的函数,比如OnClick,它会很笨地接收所有的点击事件,包括那些没有超链接对象被点击的事件,也包括那些背后有好几层连接的对象点击事件,所以我们需要根据点击事件逐级往上检查。
2、在窗口程序中安装事件处理响应函数
主要包括安装函数InstallEventHandler,卸载函数UninstallEventHandler,安装响应函数OnDocumentComplete,卸载响应函数OnBeforeNavigate2和OnDestroy等五个函数。
注意:在处理事件响应函数的安装和卸载要格外小心,重复安装可能导致重复接收消息甚至导致程序崩溃,而忘记卸载则会导致COM资源泄漏。
相关阅读:http://www.codeproject.com/Articles/1731/Handling-HTML-Element-Events-in-MFC-applications-A
主要步骤如下:
1、接收网页事件(参考资料)
要响应网页事件,需要实现IDispatch接口,并在其Invoke()方法中处理收到的消息。对于MFC,因为CCmdTarget类已经实现了该接口,所以只需要继承CCmdTarget并结合相关宏就能简单做到了。
注意1:在该类中,一定要在初始化函数中激活IDisptach接口,使用函数EnableAutomation()函数,实际上,初始化函数也只需要做这项工作就可以了。
注意2:该类中对点击事件响应的函数,比如OnClick,它会很笨地接收所有的点击事件,包括那些没有超链接对象被点击的事件,也包括那些背后有好几层连接的对象点击事件,所以我们需要根据点击事件逐级往上检查。
2、在窗口程序中安装事件处理响应函数
主要包括安装函数InstallEventHandler,卸载函数UninstallEventHandler,安装响应函数OnDocumentComplete,卸载响应函数OnBeforeNavigate2和OnDestroy等五个函数。
注意:在处理事件响应函数的安装和卸载要格外小心,重复安装可能导致重复接收消息甚至导致程序崩溃,而忘记卸载则会导致COM资源泄漏。
相关阅读:http://www.codeproject.com/Articles/1731/Handling-HTML-Element-Events-in-MFC-applications-A
//END ICTwangbiao
相关文章推荐
- CHtmlView 和 Webbrowser 控件中超链接点击事件的获取与检测
- CHtmlView 和 Webbrowser 控件中超链接点击事件的获取与检测
- CHtmlView 和 Webbrowser 控件中超链接点击事件的获取与检测
- CHtmlView 和 Webbrowser 控件中超链接点击事件的获取与检测
- 使用jQuery 模拟鼠标点击a标签事件 实现定位
- android基础之如何实现触屏监听和鼠标点击事件
- 在WebBrowser控件中获取鼠标在网页(不是浏览器窗口)上点击的位置,
- 通过监听Windows消息实现控件的键盘和鼠标事件路由
- 在WebBrowser控件中获取鼠标在网页上点击的位置
- CHtmlView 和 Webbrowser 控件中超链接点击事件的获取与检测
- 在WebBrowser控件中获取鼠标在网页上点击的位置
- ViewPager中控件的点击事件监听
- Python利用pyHook实现监听用户鼠标与键盘事件
- BaseAdapter实现ListView中item上每个控件的获取以及点击
- Extjs之DateField控件的鼠标点击选取事件监控
- js获取鼠标点击事件的相对位置
- 获取鼠标点击事件并显示相对横轴纵轴坐标
- ListView控件中item中实现的Button的点击事件
- 获取iframe中的内容、查找获取指定元素(关于用c++调用WEBBROWSER控件,使用相关接口操作web页面元素的一些方法)
- EditText监听输入完成和设置点击事件时与父控件的冲突问题