CHtmlView中如何禁用HTML页面的上下文菜单

本文介绍了一个名为CMyIEWnd的类的实现细节,该类继承自CWnd,并重写了右键点击及上下文菜单的相关消息处理函数。通过在HTML视图中使用此自定义窗口类,可以为IE内核的浏览器窗口添加额外的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.添加"MyIEWnd.h"

  1. // MyIEWnd.h: interface for the CMyIEWnd class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_MYIEWND_H__348AB709_5BCD_4815_BEEA_CBF2AF25906A__INCLUDED_)
  5. #define AFX_MYIEWND_H__348AB709_5BCD_4815_BEEA_CBF2AF25906A__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. ////////////////////////////
  10. class CMyIEWnd : public CWnd {
  11. public:
  12.     CMyIEWnd() { }
  13.     ~CMyIEWnd() { }
  14.     afx_msg void OnContextMenu(CWnd* pWnd, CPoint pos);
  15.     afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
  16.     afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
  17.     DECLARE_MESSAGE_MAP();
  18.     DECLARE_DYNAMIC(CMyIEWnd)
  19. };
  20. //////////////////
  21. #endif // !defined(AFX_MYIEWND_H__348AB709_5BCD_4815_BEEA_CBF2AF25906A__INCLUDED_)

2.添加"MyIEWnd.cpp"

  1. // MyIEWnd.cpp: implementation of the CMyIEWnd class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "CCBNetBankDemo.h"
  6. #include "MyIEWnd.h"
  7. #ifdef _DEBUG
  8. #undef THIS_FILE
  9. static char THIS_FILE[]=__FILE__;
  10. #define new DEBUG_NEW
  11. #endif
  12. //////////////////////////////////////////////////////////////////////
  13. // Construction/Destruction
  14. //////////////////////////////////////////////////////////////////////
  15. IMPLEMENT_DYNAMIC(CMyIEWnd, CWnd)
  16. BEGIN_MESSAGE_MAP(CMyIEWnd, CWnd)
  17.     ON_WM_CONTEXTMENU()
  18. // ON_WM_RBUTTONDOWN()
  19. // ON_WM_RBUTTONDBLCLK()
  20. END_MESSAGE_MAP()
  21. void CMyIEWnd::OnRButtonDown(UINT nFlags, CPoint point)
  22. {
  23. }
  24. void CMyIEWnd::OnRButtonDblClk(UINT nFlags, CPoint point)
  25. {
  26. }
  27. void CMyIEWnd::OnContextMenu(CWnd* pWnd, CPoint pos)
  28. {
  29.     TRACE(_T("CMyIEWnd::OnContextMenu/n"));
  30. }

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);
 }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值