私はWebブラウザコントロールを持っていて、コンテナに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
私はデフォルトIOleClientSiteを持っていないことのように私はIEか何かではないですので。これらのポインタ/ ByRefsをどのように埋めるかを理解するには、MSDNはそれほど役に立ちません。
したがって、基本的にE_NOTIMPLを返すと、COMは強制的にデフォルト設定を使用します。私はこの権利を得ていますか?それは良いと思うから:) –
これは理論であり、通常はMicrosoftが提供する拡張インターフェイスで動作します。しかし、あなたがE_NOTIMPLを返し、適切なことをしていることに気付くのは、呼び出し元(ここではIE)の責任です。私はE_NOTIMPLを試してみることをお勧めします。それが失敗した場合は、MFCが(ほとんどがS_FALSEを返す)何をするかを調査してください。 – DavidK