0

私は C# でブラウザ ヘルパー オブジェクトに取り組んでいます (はい、パフォーマンスが良くないことはわかっています)。

ウィンドウの HTMLWindowEvents2_Event.onload イベントにハンドラーをアタッチしています。イベントが正しく発生している (たとえば、更新が発生したとき)。ハンドラーが呼び出されていることがわかり、タイプは「ロード」イベントとして正しく表示されます。

イベント ハンドラーには、IHTMLEventObj をサポートするパラメーターがあります。このオブジェクトから、onload イベントをスローしたウィンドウまたはドキュメントに到達する方法がわかりません。これはこのインターフェイスからでも可能ですか? 渡されたオブジェクトは、null srcElement プロパティを持っているように見えます (おそらく、ドキュメント内の要素ではなく、ウィンドウによって発生したイベントであるため)。

ドキュメントを取得するには、これを別のクラスまたはインターフェイスにキャストする必要がありますか?

C# または C++ のヘルプがあれば幸いです。

4

1 に答える 1

1

イベントのソース情報はありません。

イベントを Window オブジェクトのコネクション ポイントにアタッチしたため、どのウィンドウがイベント ソースになるかがわかっていると仮定します。イベントをフックするときは、イベント ソースが必要な場合に備えて、ウィンドウへの参照を保存する必要があります。

Class HTMLWindowEvents2Sink
{
    public HTMLWindowEvents2Sink(IHTMLWindow2 eventSource)
    {
        this.eventSource=eventSource;
    }
    IHTMLWindow2 eventSource;
    void AdviseEvent()
    {
        eventSource.load += this.HTMLWindow_onload; 
    }
    ....
}

また、デリゲート イベント処理モデルを使用することで、パフォーマンス ヒットと潜在的なバグ ファームが発生します。

于 2013-01-22T00:08:47.370 に答える