4

MFC を使用して Web ページの ActiveX コントロールを作成しています。エクスプローラーを閉じるとき、コントロールのメイン ウィンドウが破棄される前に、一部のリソースを解放する必要があります。いくつかの検索を行ったところ、オーバーライドされたCOleControl::OnClose(DWORD dwSaveOption)関数が解放ジョブを実行するのに適した場所であることがわかりました。そこで、コードに次の変更を加えました。

  1. ヘッダー ファイルのコントロールの宣言に次の行を追加します。

    virtual void OnClose(DWORD dwSaveOption);
  2. コントロールの実装ファイルに次の行を追加します。

    void MyControl::OnClose(DWORD dwSaveOption)
    {
        // ジョブを解放するコード
        COleControl::OnClose(dwSaveOption);
    }
    

エクスプローラーを閉じる際に MyControl::OnClose を実行すればいいと思いますが、そうではありません。関数を正しくオーバーライドするために何かを見逃しましたか、それとも OnClose 関数はそれを行うのに適切な場所ではありませんか?

4

1 に答える 1

0

COleControl::OnDestroy()私は個人的にクリーンアップのためにオーバーライドします。Close を有効にするための何らかのイベント シンク登録呼び出しがありませんか? それともディスパッチマップエントリー?

于 2013-04-30T23:25:37.867 に答える