http://blog.csdn.net/gnorth/article/details/7258293

分类: WebBrowser MFC 禁止新窗口2012-02-14 15:25 1787人阅读 评论(1) 收藏 举报

在百度上找了很多方法,没有一个能够完美的解决这个问题。

我在XP SP3上测试,WebBrowser的OnNewWindow3事件中处理是无效的,不知道人家说XP SP2有效是怎么回事。

那种创建一个隐藏窗口出来的办法,我个人反正是不愿意去用,总之感觉不太好,而且据说这是目前唯一的解决办法。

后来实在没办法了,只能往土办法去想了,我们知道IE中有状态栏这个东西,当鼠标指向某个链接时,状态栏的文字就变成链接地址了。

经过测试之后,确实可以用WM_GETTEXT来获取到链接,这就解决了OnNewWindow2中获取不到新窗口的链接的问题了。

但是IE可以有状态栏,WebBrowser中我找了一下,没有发现能够显示状态栏的操作,在spy++中查看,也不像IE那样有状态栏的窗口。所以,我又仔细研究了一下WebBrowser关于状态栏的事件。后来发现StatusTextChange中其实就可以直接获取到状态栏的文字了。

于是,写代码的事情就很简单了,而且是完美的解决问题,不管是js的   window.open    还是一个简单的新窗口链接。

void CMWebDlg::OnNewWindow2Explorer1(LPDISPATCH FAR* ppDisp, BOOL FAR* Cancel)
{
 VARIANT vars;
 m_Web.Navigate(strURL,NULL,NULL,&vars,&vars);
 *Cancel =TRUE;
}

void CMWebDlg::OnStatusTextChangeExplorer1(LPCTSTR Text) 
{
 strURL=Text;
}

在类中或者CPP中  CString strURL; 一下即可。

最新文章

  1. 完成整个DAO的实现及测试代码
  2. BZOJ 2179: FFT快速傅立叶
  3. HTML5学习总结-10 Android 控件WebView显示网页
  4. CentOS 7将网卡名称eno16777736改为eth0
  5. 烽火HG220G 配置
  6. Linux进程间通信IPC学习笔记之消息队列(Posix)
  7. Java [leetcode 30]Substring with Concatenation of All Words
  8. binutil 工具-----C分析工工具
  9. Oracle EBS-SQL (BOM-18):检查BOM与工艺路线对照.sql
  10. Windows下搭建Eclipse+Android4.0开发环境
  11. cordova开发中遇到的一些坑
  12. simplePagination API
  13. git 查看当前与上一次version的差异
  14. JS事件响应的学习总结
  15. 自定义Git
  16. windows 下运行angualr/material2 项目
  17. wpf研究之道——自定义Button控件
  18. MySQL DATEDIFF() 函数
  19. introduce explaining variable 引入解释变量
  20. Go语言学习笔记(一) [Go语言的HelloWorld]

热门文章

  1. excel的隔行插入
  2. AJAX与XMLHttpRequest
  3. idea git ignore 插件
  4. [AngularFire2 & Firestore] Example for collection and doc
  5. ONVIF客户端搜索设备获取rtsp地址开发笔记(精华篇)
  6. mahout-distribution-0.9.tar.gz的安装的与配置、启动与运行自带的mahout算法
  7. POJ 1874 畅通工程续(最短路模板题)
  8. 交叉编译工具链bash: gcc:no such file or directory
  9. 关于Webpack详述系列文章 (第二篇)
  10. HDU5126 stars(CDQ分治)