为什么在CDHtmlDialog中没有触发ShowContextMenu?

时间:2019-05-14 16:22:43

标签: c++ windows mfc dialog webbrowser-control

  

-----------------------------------更新----------- ----------------------------
  我想这与PDF有关。在显示pdf之前,所有功能都可以正常工作,并且可以触发所有功能。但是在显示pdf之后,它们将无法工作。所以我认为pdf本身就是一个activeX控件。
  ------------------------------------更新------------- ----------------------------

我需要在项目的对话框中嵌入html查看器。 但是,此html视图将导航到pdf文件,而我的代码对此有效。 但是,当我在对话框中的pdf上单击鼠标右键时,它总是显示上下文菜单,如下所示: enter image description here 这是我的代码的一部分,我在STDMETHOD(ShowContextMenu)内添加了断点,但这永远不会触发函数。它不是回调函数吗?如何禁用右键单击或上下文菜单?

class TestHtmlViewer : public CDHtmlDialog
{
public:
TestHtmlViewer() {};
~TestHtmlViewer() {};

void Navigate(LPCTSTR URL, VARIANT* pFlags = nullptr, VARIANT* pTargetFrameName = nullptr, VARIANT* pPostData = nullptr, VARIANT* pHeaders = nullptr) const;

STDMETHOD(ShowContextMenu)(DWORD dwID, POINT *ppt, IUnknown *pcmdtReserved, IDispatch *pdispReserved) override
{
    UNREFERENCED_PARAMETER(dwID);
    UNREFERENCED_PARAMETER(ppt);
    UNREFERENCED_PARAMETER(pcmdtReserved);
    UNREFERENCED_PARAMETER(pdispReserved);
    return S_OK;
};
};

我也尝试了以下功能,但并未被调用:

BOOL TestHtmlViewer::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_RBUTTONDBLCLK)
{
    return FALSE;
}

return CDialog::PreTranslateMessage(pMsg);
}

0 个答案:

没有答案