在MFC中捕获CWebBrowser控件的事件

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

 

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

<textarea cols="68" rows="15" name="code" class="cpp">BOOL CMyDlg::OnInitDialog() { CDialog::OnInitDialog(); //创建控件 m_BrowserShow.Create(NULL,WS_CHILD|WS_VISIBLE,rect,this,AFX_IDC_BROWSER); //开启OLE自动化 EnableAutomation(); //设置事件接口 LPUNKNOWN pUnkSink = GetIDispatch(FALSE); AfxConnectionAdvise((LPUNKNOWN)m_BrowserShow.get_Application(), DIID_DWebBrowserEvents2, pUnkSink, FALSE, &amp;m_dwCookie); return TRUE; } </textarea>

 

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

<textarea cols="68" rows="15" name="code" class="c-sharp">//注意要在头文件中申明映射宏DECLARE_EVENTSINK_MAP()就像MFC的消息映射一样 //在源文件中进行事件映射 BEGIN_EVENTSINK_MAP(CMyDlg,CDialog) ON_EVENT(CDialog,AFX_IDC_BROWSER,252,OnNavigateComplete2, VTS_DISPATCH VTS_PVARIANT) END_EVENTSINK_MAP() void CMyDlg::OnNavigateComplete2(LPDISPATCH pDisp, VARIANT FAR* vtURL) { }</textarea>

 

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

 

你可能感兴趣的:(在MFC中捕获CWebBrowser控件的事件)