2009-07-28 18 views
0

私は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はそれほど役に立ちません。

答えて

0

IDocHostUIHanlderインターフェイスではこれを実際には行っていませんが、一般的に実装したくないメソッドに対してはE_NOTIMPLを返すだけで十分です。

MFCソースを持つVisual Studioのバージョンを入手している場合は、その実装をCHtmlViewで見ることができます。出力構造を設定せずにほとんどのメソッドでS_FALSEを返すだけです。

+0

したがって、基本的にE_NOTIMPLを返すと、COMは強制的にデフォルト設定を使用します。私はこの権利を得ていますか?それは良いと思うから:) –

+0

これは理論であり、通常はMicrosoftが提供する拡張インターフェイスで動作します。しかし、あなたがE_NOTIMPLを返し、適切なことをしていることに気付くのは、呼び出し元(ここではIE)の責任です。私はE_NOTIMPLを試してみることをお勧めします。それが失敗した場合は、MFCが(ほとんどがS_FALSEを返す)何をするかを調査してください。 – DavidK

関連する問題