Поэтому я использую элемент ActiveX CShockwaveflash в моем приложении MFC, и я хочу отключить контекстное меню.
Я попытался обработать сообщение ON_WM_CONTEXTMENU() и перезаписать OnContextMenu(CWnd* cWnd, CPoint point)
. Это не сработало.
Также я попытался поднять крючок для событий мыши следующим образом:
g_hMouseHook = SetWindowsHookEx(WH_MOUSE, &OnMouseEvent, NULL, GetCurrentThreadId());
Внутри функции OnMouseEvent() я проверяю WPARAM. Но только левые щелчки мыши запускаются.
if ((nCode >= 0) && (wParam == WM_LBUTTONDOWN))
{
// fires here on left mouse down
}
else if ((nCode >= 0) && (
(wParam == WM_RBUTTONDOWN) ||
(wParam == WM_RBUTTONUP) ||
(wParam == WM_CONTEXTMENU)
)
{
// never fires here
}
Я также пробовал
m_flashPlayer.put_Menu(FALSE);
Это скрывало некоторые элементы контекстного меню. Но не все из них. Контекстное меню по-прежнему отображается правой кнопкой мыши.
Shockwave ActiveX имеет свойство "Меню". Установите значение false и оно должно работать.