Skip to content
On this page

右键菜单相关

关闭右键菜单

cpp
mbWebView mbView = mbCreateWebWindow(MB_WINDOW_TYPE_POPUP, nullptr, 0, 0, 800, 600);
// ...
mbSetContextMenuEnabled(mbView, false);

有些版本这个函数不生效,或者除了右键菜单外,还想阻止选中文本的右键复制等,可以使用如下办法:

cpp
mbRunJs(webView, frameId, "document.addEventListener('contextmenu', function (event) {event.preventDefault();});", true, nullptr, nullptr, nullptr);

这是利用了 js 的 preventDefault 阻止默认行为。

或者不用 js:

cpp
mbWebView mbView = mbCreateWebWindow(MB_WINDOW_TYPE_POPUP, nullptr, 0, 0, 800, 600);
// ...
HWND hMbWindow = mbGetHostHWND(mbView);

可以使用 mbGetHostHWND 获取到 webveiw 对应的窗口句柄,然后可以诸如 SetWindowLongPtr 设置窗口过程,或者使用消息钩子对右键进行拦截。

修改菜单的内容

cpp
mbWebView mbView = mbCreateWebWindow(MB_WINDOW_TYPE_POPUP, nullptr, 0, 0, 800, 600);
// ...
mbSetContextMenuItemShow(mbView, kMbMenuReloadId, true);

可以使用 mbSetContextMenuItemShow 定制菜单的内容,这里将刷新按钮加入右键菜单。 全部菜单项参考 mbSetContextMenuItemShow