Поэтому я использую элемент ActiveX CShockwaveflash в своем приложении MFC и хочу отключить контекстное меню.
Я попытался обработать сообщение ON_WM_CONTEXTMENU () и переписать OnContextMenu(CWnd* cWnd, CPoint point) функция. Это не сработало.
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 есть свойство с именем Menu. Установите это в false, и это должно работать.
Других решений пока нет …