1.添加"MyIEWnd.h"
- // MyIEWnd.h: interface for the CMyIEWnd class.
- //
- //////////////////////////////////////////////////////////////////////
- #if !defined(AFX_MYIEWND_H__348AB709_5BCD_4815_BEEA_CBF2AF25906A__INCLUDED_)
- #define AFX_MYIEWND_H__348AB709_5BCD_4815_BEEA_CBF2AF25906A__INCLUDED_
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- ////////////////////////////
- class CMyIEWnd : public CWnd {
- public:
- CMyIEWnd() { }
- ~CMyIEWnd() { }
- afx_msg void OnContextMenu(CWnd* pWnd, CPoint pos);
- afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
- afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
- DECLARE_MESSAGE_MAP();
- DECLARE_DYNAMIC(CMyIEWnd)
- };
- //////////////////
- #endif // !defined(AFX_MYIEWND_H__348AB709_5BCD_4815_BEEA_CBF2AF25906A__INCLUDED_)
2.添加"MyIEWnd.cpp"
- // MyIEWnd.cpp: implementation of the CMyIEWnd class.
- //
- //////////////////////////////////////////////////////////////////////
- #include "stdafx.h"
- #include "CCBNetBankDemo.h"
- #include "MyIEWnd.h"
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[]=__FILE__;
- #define new DEBUG_NEW
- #endif
- //////////////////////////////////////////////////////////////////////
- // Construction/Destruction
- //////////////////////////////////////////////////////////////////////
- IMPLEMENT_DYNAMIC(CMyIEWnd, CWnd)
- BEGIN_MESSAGE_MAP(CMyIEWnd, CWnd)
- ON_WM_CONTEXTMENU()
- // ON_WM_RBUTTONDOWN()
- // ON_WM_RBUTTONDBLCLK()
- END_MESSAGE_MAP()
- void CMyIEWnd::OnRButtonDown(UINT nFlags, CPoint point)
- {
- }
- void CMyIEWnd::OnRButtonDblClk(UINT nFlags, CPoint point)
- {
- }
- void CMyIEWnd::OnContextMenu(CWnd* pWnd, CPoint pos)
- {
- TRACE(_T("CMyIEWnd::OnContextMenu/n"));
- }
3.在MyHtmlView.h添加
#include "MyIEWnd.h"
4. 在
class CMyHtmlView : public CHtmlView
{
protected:
添加
CMyIEWnd m_myIEWnd;
5.添加GetBrowserWindow
HWND CMyHtmlView::GetBrowserWindow()
{
HWND hwnd = m_hWnd;
while (TRUE) {
HWND hwndChild = ::GetWindow(hwnd, GW_CHILD);
TRACE("hwndChild = %p/n",hwndChild);
if (hwndChild==NULL) {
return hwnd;
}
hwnd = hwndChild;
}
return NULL;
#ifdef NEVER
CComQIPtr<IOleWindow> spOleWin;
HWND hwnd;
ASSERT(m_pBrowserApp);
HRESULT hr = m_pBrowserApp->QueryInterface(IID_IOleWindow,(void**)&spOleWin);
if (SUCCEEDED(hr)) {
hr = spOleWin->GetWindow(&hwnd);
if (SUCCEEDED(hr)) {
return hwnd;
}
}
return NULL;
#endif
}
6.重载OnNavigateComplete2
void CMyHtmlView::OnNavigateComplete2(LPCTSTR strURL)
{
HWND hwnd = GetBrowserWindow();
if (!m_myIEWnd.m_hWnd) {
TRACE("Subclass m_myIEWnd = %p/n",hwnd);
m_myIEWnd.SubclassWindow(hwnd);
}
}