屏蔽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); //还原以前的窗口过程
}
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=69736