MDI截取OnNewWindow2并且在自己的程序打开而不是IE打开新网页

在自己编写的浏览器软件中,对于在新窗口打开的页面默认调用系统默认浏览器打开,而不是在当前浏览器中打开,以下在MDI中调用

OnNewWindow2实现在自己的浏览器中新窗口打开,原理即是修改OnNewWindow2中参数LPDISPATCH* ppDisp的值,实现浏览器的重定向.
(1)声明自定义消息WM_NEWURL,
   我的声明为#define WM_NEWURL WM_USER+104
 (2)重载OnNewWindow2函数,
    往MainFrame发打开新窗口消息
     void CfyshowView::OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel)
    { // TODO: Add your specialized code here and/or call the base class
       ::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中直接重定向到当前窗口但无反应,似乎需要重

写向至新实例).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值