2009-07-28 41 views
0

我有一个webbrowser控件,我试着在容器中实现IDocHostUIHandler。但是,由于我没有默认IOleClientSite,我无法将所有事件转发到默认容器。如何在.NET中成功实现IDocHostUIHandler?

我无法找到一种方法来回应所有这些事件,给某些事件给出错误的回应或者没有做任何事情导致应用程序崩溃。

福克斯例如:

Public Sub ShowUI(ByVal dwID As UInteger, ByRef pActiveObject As Object, ByRef pCommandTarget As Object, ByRef pFrame As Object, ByRef pDoc As Object) Implements SecureBrowser.IDocHostUIHandler.ShowUI 
    'DefaultClientSite.ShowUI(dwID, pActiveObject, pCommandTarget, pFrame, pDoc) 
End Sub 

因为我在IE或类似的东西我不是我没有默认的IOleClientSite。当涉及到如何填充这些指针/ ByRefs时,MSDN帮助不大。

回答

0

我还没有为IDocHostUIHanlder接口实际完成这项工作,但通常情况下,通常只要您不想实施任何方法就可以返回E_NOTIMPL。

如果你有一个带有MFC源代码的Visual Studio版本,你可以在CHtmlView中看看它们的实现:它大部分只是为大多数方法返回S_FALSE,而没有设置任何输出结构。

+0

所以基本上返回E_NOTIMPL将强制COM使用默认设置。我是否正确?因为这听起来不错:) – 2009-08-04 10:44:47

+0

这是理论,它通常适用于Microsoft提供的扩展接口。然而,由调用者(这里是IE)注意你已经返回了E_NOTIMPL并且做了适当的事情。我建议先尝试使用E_NOTIMPL,如果失败,请调查MFC所做的事情(主要是返回S_FALSE)。 – DavidK 2009-08-04 10:52:46