----------------------------------- Update ----------- ----------------------------
Я думаю, это связано с PDF. Перед отображением PDF все функции работают нормально, и все они могут быть запущены. Но после отображения PDF они не будут работать. Поэтому я думаю, что сам pdf является элементом управления ActiveX.
------------------------------------Обновить------------- ----------------------------
Мне нужно встроить просмотрщик html в диалог в моем проекте.
Но это HTML-представление перейдет к PDF-файлу, и мой код работает на него.
Однако каждый раз, когда я щелкаю правой кнопкой мыши на PDF в диалоговом окне, он всегда отображает контекстное меню следующим образом:
Вот часть моего кода, я добавляю точку останова внутри 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);
}