正确的方法去拦截OnNewWindow2实现在同一个窗口显示_target的网页

[cpp]  view plain copy
  1. // CMy5View message handlers 
  2. #include <atlbase.h> 
  3. #include <Mshtml.h> 
  4. #include <COMDEF.H> 
  5. void CMy5View::OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel)  
  6.     // TODO: Add your specialized code here and/or call the base class 
  7.     CComPtr<IHTMLDocument2> pHTMLDocument2; 
  8.      
  9.     m_pBrowserApp->get_Document((IDispatch **)&pHTMLDocument2); 
  10.     if (pHTMLDocument2!=NULL) 
  11.     { 
  12.         CComPtr<IHTMLElement> pIHTMLElement; 
  13.         pHTMLDocument2->get_activeElement(&pIHTMLElement); 
  14.          
  15.         if (pIHTMLElement!=NULL) 
  16.         { 
  17.             variant_t url; 
  18.             HRESULT hr=pIHTMLElement->getAttribute(L"href", 0, &url); 
  19.             if (SUCCEEDED(hr)) 
  20.             { 
  21.                 hr=m_pBrowserApp->Navigate2(&url, NULL, NULL, NULL, NULL); 
  22.                  
  23.                 url.Clear(); 
  24.                  
  25.                 if (SUCCEEDED(hr)) 
  26.                 { 
  27.                     *Cancel=TRUE; 
  28.                 } 
  29.             } 
  30.         } 
  31. }    
  32. //  CHtmlView::OnNewWindow2(ppDisp, Cancel); 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. 打开VC 6.0,选择File -> New -> MFC AppWizard(exe)。 2. 在AppWizard中,选择“Single Document”或“Multiple Documents”,点击Next。 3. 在下一步中,选择“Dialog Based”或“Form View”,点击Next。 4. 在下一步中,输入项目名称和保存路径,点击Next。 5. 在下一步中,选择“Create a new class”,并输入类名和基类,例如“CNewWindowDlg”和“CDialog”,点击Finish。 6. 在ClassView中,找到新创建的类,右键点击它,选择“Add” -> “Add Member Variable”。 7. 在对话框中,输入变量名称和控件类型,例如“m_edit”和“CEdit”,点击“OK”。 8. 在ClassView中,找到新创建的类,右键点击它,选择“Add” -> “Add Member Function”。 9. 在对话框中,输入函数名称和返回类型,例如“OnInitDialog”和“BOOL”,点击“OK”。 10. 在新创建的函数中,添加代码来初始化控件和设置窗口属性。 11. 在资源编辑器中,添加一个新的对话框,例如“IDD_NEW_WINDOW”。 12. 在ClassView中,找到新创建的类,右键点击它,选择“Add” -> “Add Function”。 13. 在对话框中,输入函数名称和返回类型,例如“OnNewWindow”和“void”,点击“OK”。 14. 在新创建的函数中,添加代码来创建并显示新的窗口。 15. 在消息映射中,添加一个新的消息处理函数,例如“ON_COMMAND(ID_NEW_WINDOW, OnNewWindow)”。 16. 编译和运行程序,点击菜单或按钮来显示新创建的窗口
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值