2009-07-28 5 views
0

Ich habe ein Webbrowser-Steuerelement und ich versuche, IDocHostUIHandler im Container zu implementieren. Da ich jedoch keine Standard-IOleClientSite habe, kann ich nicht alle Ereignisse an einen Standard-Container weiterleiten.Wie kann ich IDocHostUIHandler in .NET erfolgreich implementieren?

Und ich konnte keinen Weg finden, alle zu beantworten, falsche Antworten auf einige der Ereignisse zu geben oder nichts zu tun, was zum Absturz der Anwendung führte.

Fox Beispiel:

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 

Da ich so nicht in IE oder etwas bin ich nicht über eine Standard-IOleClientSite. MSDN hilft nicht viel, wenn es darum geht, herauszufinden, wie diese Zeiger/ByRefs gefüllt werden.

Antwort

0

Ich habe dies nicht wirklich für die IDocHostUIHanlder-Schnittstelle getan, aber im Allgemeinen ist es in der Regel genug, E_NOTIMPL für alle Methoden zurückzugeben, die Sie nicht implementieren möchten.

Wenn Sie eine Version von Visual Studio mit der MFC-Quelle haben, können Sie ihre Implementierung in CHtmlView ansehen: das S_FALSE für die meisten Methoden weitgehend zurückgibt, ohne eine der Ausgabestrukturen festzulegen.

+0

Im Grunde wird die Rückkehr von E_NOTIMPL die COM zwingen, die Standardeinstellungen zu verwenden. Verstehe ich das richtig? Weil das gut klingt :) –

+0

Das ist die Theorie, und es funktioniert normalerweise für die Erweiterungsschnittstellen, die Microsoft bereitstellt. Es ist jedoch Sache des Aufrufers (hier IE) zu bemerken, dass Sie E_NOTIMPL zurückgegeben haben und das Richtige tun. Ich würde vorschlagen, mit E_NOTIMPL zu versuchen und wenn das fehlschlägt, untersuchen, was MFC tut (meistens S_FALSE zurückgeben). – DavidK

Verwandte Themen