Почему ShowContextMenu не запускается в CDHtmlDialog? - PullRequest
0 голосов
/ 14 мая 2019

----------------------------------- Update ----------- ----------------------------
Я думаю, это связано с 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);
}
...