在自己编写的浏览器软件中,对于在新窗口打开的页面默认调用系统默认浏览器打开,而不是在当前浏览器中打开,以下在MDI中调用OnNewWindow2实现在自己的浏览器中新窗口打开,原理即是修改OnNewWindow2中参数LPDISPATCH* ppDisp的值,实现浏览器的重定向.

(1)声明自定义消息WM_NEWURL,我的声明为#define WM_NEWURL WM_USER+104

(2)重载OnNewWindow2函数,往MainFrame发打开新窗口消息

void CfyshowView::OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel){::SendMessage(AfxGetMainWnd()->m_hWnd,WM_NEWURL,(WPARAM)ppDisp,NULL);*Cancel=TRUE;CHtmlView::OnNewWindow2(ppDisp, Cancel);}

(3)在CMainFrame中映射消息WM_NEWURL,实现打开新窗口,并对LPDISPATCH* ppDisp进行重定向.

LRESULT CMainFrame::OnNewURL(WPARAM wParam,LPARAM lParam)
{
LPDISPATCH* ppDispatch=(LPDISPATCH*)wParam;
SendMessage(WM_COMMAND, ID_FILE_NEW, 0);
CChildFrame* pChildFrame = (CChildFrame*)GetActiveFrame();
*ppDispatch=((CxxxxView*)pChildFrame->GetActiveView())->GetApplication();
return 0;
}

如果要实现在当前窗口打开新文档,不弹出新窗口,则需要在当前HtmlView下新建一个隐藏HtmlView,在当前OnNewWindow2中重定向到隐藏的HtmlView,再在隐藏的HtmlView中重定向回来(原理是这样但没测试过,本来在OnNewWindow2中直接重定向到当前窗口但无反应,似乎需要重写向至新实例).

CHtmlView当前浏览器打开新窗口相关推荐

  1. Windows Phone 7 浏览器打开新窗口问题

    Windows Phone 中自带的WebBrowser目前不支持打开新的窗口, 即点击页面中带有target="_blank"的超链接时不会打开这个超链接. 解决方案:当网页加载 ...

  2. 浏览器打开新窗口被拦截问题

    1. window.open() 方法和 form表单的submit方法 需要用户点击事件触发,将其直接写在点击事件内部,未被拦截 <!DOCTYPE html> <html lan ...

  3. javacript实现不被浏览器拦截打开新窗口

    情景: 1.用户发送数据到服务器 2.服务器根据用户的数据生成文档 3.服务器把所生成的文档的下载地址提供给用户 4.用户使用的浏览器自动根据下载地址下载文件 实现: 网上搜索查找了下实现方式,就我查 ...

  4. 浏览器拦截打开新窗口情况总结

    在打开一个新窗口时,由于浏览器的安全机制,用户未始终允许的情况下,可能会触发到浏览器拦截,无法正常直接弹出. 网上有很多给出解决方案的只言片语,不够全面,所以针对自己遇到的问题做了详细的情况分析.总结 ...

  5. 手机uc新窗口打开的html标签,在电脑UC浏览器的新窗口页中如何打开书签

    在电脑UC浏览器的新窗口页中如何打开书签 UC浏览器是一个很不错的查询资料的软件,我们可以在UC浏览器的新标签页中打开书签,那么如何打开呢?小编就来为大家介绍一下吧. 具体如下: 1. 第一步,双击并 ...

  6. 基于vue,解决打开新窗口被浏览器拦截的问题

    首先,我们先来说一下在什么情况下,新窗口会被阻截,以及阻截的原因. 当使用 window.open(url,"_blank")打开新窗口时,如果url是通过ajax从后台获取 到的 ...

  7. window.open()打开新窗口被浏览器拦截

    原因:在浏览器的安全机制里面,非用户触发的window.open方法,是会被拦截的. 经过实际测试,Chrome.IE不会拦截,FireFox会拦截. //不会被拦截 $('#btn').click( ...

  8. 浏览器拦截js打开新窗口的解决方案

    今天技术大佬问了我一个问题:使用js在浏览器中打开新的窗口,什么时候会被拦截?什么时候不会被拦截? 一下给我问住了······· 于是上网百度的一波~ 常用的两种打开新窗口的方式 window.ope ...

  9. JavaScript浏览器window对象→简介、消息对话框、计时器、history、打开新窗口及模式showModalDialog、location、navigator、screen、窗口位置尺寸

    window对象 alert消息提示对话框 confirm消息确认对话框 prompt互动对话框 计时器 setInterval周期计时器 setTimeout延迟计时器 window.history ...

最新文章

  1. 计算机仿真实验用的教学软件是,AR增强现实教学软件,学习效果倍增
  2. jquery and event
  3. linux下静态库和动态库的制作与使用
  4. zookeeper入门系列
  5. 11 MM配置-主数据-定义物料类型的编码范围
  6. tmux共享_最常用的终端工具 tmux
  7. PHP如何实现网址伪静态
  8. ng-class使用
  9. cannot+connect+mysql_mysqlnd cannot connect to MySQL 4.1+ using the old insecure
  10. 数论——同余和费马小定理
  11. Head First设计模式(中文版)PDF
  12. 关于List转Json的简单方法
  13. RNN梯度消失和爆炸的原因
  14. 自然语言处理之——句法分析
  15. 压力面试问题——当你和好友,同一天同一家公司面试同一个岗位,你更希望谁入选?3种回答方式解析|智测优聘总结
  16. 黑马程序员_JAVA之IO流(其他IO流)
  17. Cocos Creator 调试入门
  18. 顺序表创建和就地逆置
  19. 基于Altium Designer 20设计双层印刷电路板的详细步骤(待写)
  20. 高等代数_第8章:证明_商空间的维数公式

热门文章

  1. 关于云计算--openstack
  2. 网络通信详解-深入浅出
  3. 微信为什么使用 SQLite 保存聊天记录
  4. freemarker ftl模板语法和指令
  5. 2022年亚太杯数学建模竞赛ABC题
  6. ES6——let-const的变量声明以及模板字符串
  7. 如何改变Windows桌面任务栏的大小
  8. 计算机键盘时好时坏,电脑鼠标时好时坏的解决方法
  9. VUE使用docxtemplater导出word(带图片)
  10. Hough直线检测的原理与实现