在MFC中捕获CWebBrowser控件的事件

来源:互联网 发布:算法必须有输出 编辑:程序博客网 时间:2024/05/17 02:04

在很多时候可能要用到CWebBrowser控件,但是CWebBrowser并不像CHtmlView一样继承一下然后重载下虚函数就可以获取IE中的事件,而CWebBrowser却没有提供这样的功能,但是可以自已进行处理,下面来看下MFC的代码:

 

1.首先定义一个CWebBrower成员对象,然后在窗口初始化事件中创建CWebBrower对象.

[cpp] view plaincopy
  1. BOOL CMyDlg::OnInitDialog()  
  2. {  
  3.    CDialog::OnInitDialog();  
  4.    //创建控件  
  5.    m_BrowserShow.Create(NULL,WS_CHILD|WS_VISIBLE,rect,this,AFX_IDC_BROWSER);  
  6.   
  7.    //开启OLE自动化  
  8.    EnableAutomation();  
  9.   
  10.    //设置事件接口  
  11.    LPUNKNOWN pUnkSink = GetIDispatch(FALSE);  
  12.    AfxConnectionAdvise((LPUNKNOWN)m_BrowserShow.get_Application(),   
  13.         DIID_DWebBrowserEvents2, pUnkSink, FALSE, &m_dwCookie);  
  14.      
  15.    return TRUE;  
  16. }  

 

2.第二步是对你感兴趣的事件进行映射

[c-sharp] view plaincopy
  1. //注意要在头文件中申明映射宏DECLARE_EVENTSINK_MAP()就像MFC的消息映射一样  
  2.   
  3. //在源文件中进行事件映射  
  4. BEGIN_EVENTSINK_MAP(CMyDlg,CDialog)  
  5.     ON_EVENT(CDialog,AFX_IDC_BROWSER,252,OnNavigateComplete2, VTS_DISPATCH VTS_PVARIANT)  
  6. END_EVENTSINK_MAP()  
  7.   
  8. void CMyDlg::OnNavigateComplete2(LPDISPATCH pDisp, VARIANT FAR* vtURL)  
  9. {  
  10. }  

 

OK,以上代码已经完成了对CWebBrower控件的事件捕获了!


原文地址:http://blog.csdn.net/mynamelj/article/details/6343032

0 0