找到的例子基本上都是VB的,而且很简单,我就希望能在VC6的SDK中实现它(添加了ATL支持的)
引用Microsoft HTML OBject Library Dim WithEvents M_Dom As MSHTML.HTMLDocument
Private Function M_Dom_oncontextmenu() As Boolean
M_Dom_oncontextmenu = False
End Function
Private Sub Webbrowser1_DownloadComplete()
Set M_Dom = Webbrowser1.Document
End Sub
看过了这篇文章是与HTMLElementEvents2接口有关的,http://topic.csdn.net/t/20051120/00/4405324.html也不太明白该怎么操作,而且创建事件连接时也出现了E_NOINTERFACE错误,确实想不到办法了......
或者有什么鼠标钩子,消息等方法让WebBrowser控件接收不到右键消息也行,提供一下代码好吗?谢谢大家了!!!!
引用Microsoft HTML OBject Library Dim WithEvents M_Dom As MSHTML.HTMLDocument
Private Function M_Dom_oncontextmenu() As Boolean
M_Dom_oncontextmenu = False
End Function
Private Sub Webbrowser1_DownloadComplete()
Set M_Dom = Webbrowser1.Document
End Sub
看过了这篇文章是与HTMLElementEvents2接口有关的,http://topic.csdn.net/t/20051120/00/4405324.html也不太明白该怎么操作,而且创建事件连接时也出现了E_NOINTERFACE错误,确实想不到办法了......
或者有什么鼠标钩子,消息等方法让WebBrowser控件接收不到右键消息也行,提供一下代码好吗?谢谢大家了!!!!
获取DOCUMENT接口然后禁用其右键菜单(如上面的VB代码)
CComQIPtr<IHTMLDocument3> spDoc3 = pDoc2;
CComVariant v = (IDispatch*)&m_disp;
spDoc3->put_oncontextmenu(&v);在m_disp的Invoke实现里面:
...Invoke(...)
{
CComPtr<IHTMLWindow2> spWin2;
pDoc2->get_parentWindow(&spWin2);
CComPtr<IHTMLEventObj> spEvent;
spWin2->get_event(&spEvent);
CComVariant vRet = false;
spEvent->put_returnValue(&vRet);
spEvent->put_cancelBubble(VARIANT_TRUE);
return S_OK;
}