屏蔽media player 的右键菜单

采用子类化。替换窗口过程,拦截鼠标右键的消息。

static WNDPROC lpOldProc; //保存以前的窗口过程

WNDPROC  CTestMediaplayDlg::lpOldProc;

static LRESULT CALLBACK NewWindowProc(   /*新的窗口过程*/
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
);

/*替换窗口过程*/
lpOldProc = (WNDPROC)SetWindowLong(m_player.GetSafeHwnd(),GWL_WNDPROC,(long)NewWindowProc);

LRESULT CALLBACK CTestMediaplayDlg::NewWindowProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)
{
        switch(uMsg) //处理右键
 {
 case WM_RBUTTONDOWN:
  TRACE(“TEST\n”);
  return 0;
 case WM_RBUTTONUP:
  TRACE(“TEST2\n”);
  return 0;
 default:
  break;
 }
 return CallWindowProc(lpOldProc,hwnd,uMsg,wParam,lParam); //还原以前的窗口过程

  }


2条评论

  1. 现在一看到代码就头晕!

  2. 不错啊,挺实用的

发表评论

评论也有版权!