2009-07-28 78 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