【问题标题】:MFC ActiveX CShockwaveflash element. How to disable the context menu?MFC ActiveX CShockwaveflash 元素。如何禁用上下文菜单?
【发布时间】:2013-11-21 13:14:44
【问题描述】:

所以我在我的 MFC 应用程序中使用 ActiveX CShockwaveflash 元素,我想禁用上下文菜单。

我尝试处理 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);

这隐藏了一些上下文菜单项。但不是全部。右键菜单仍然出现在鼠标右键。

【问题讨论】:

    标签: c++ flash mfc activex contextmenu


    【解决方案1】:

    Shockwave ActiveX 有一个名为 Menu 的属性。将此设置为 false,它应该可以工作。

    【讨论】:

    • 我正在使用 CShockwaveflash1 类。那里没有“菜单”属性或类似的东西。有 SetMenu(CMenu* pMenu) 方法。我试图调用它并将 NULL 作为参数传递。那没有帮助。右键菜单仍然出现在鼠标右键。
    • 我不知道您是否正在寻找它。但正如我告诉你的,IShockwaveFlash 接口有一个名为 Menu 的属性。使用您的 Typelib 查看器,您可以看到它。
    • CShockwaveflash1 有一个基本类型:CWnd。我在 Typelib Viewer 的任何地方都没有看到 IShockwaveFlash...
    • 你只是从你得到的包装中说话。我说的是控件支持的 ActiveX 接口。尝试了解差异;)
    • 哦...我终于明白了 :) 但是我使用 Create() 方法创建了我的元素。出于特定原因,我不能只通过 Visual Studio 对话框构造函数在我的对话框中添加此元素。
    猜你喜欢
    • 1970-01-01
    • 2021-09-27
    • 2016-08-08
    • 2011-11-04
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多