MFCにおけるFlashPlayerOCXコントロールの動的作成と破棄について

解決


bigbrother  2010-11-02 10:45:07  No: 72027  IP: [192.*.*.*]

MFCのダイアログ等でFlashPlayerのActiveXコントロールを動的に(Create関数などで作成し、DestroyWindowで破棄)使用しているのですが、アプリケーション終了時に「アクティブ化を解除しているアクティブ化コンテキストは、最近アクティブ化されたものではありません。」などという例外が出てしまいます。
なぜでしょうか?

ActiveXにまつわるメッセージだということと、アクティブ化の意味はそれなりにわかるのですが、なぜ用意されている関数での作成と破棄を行っているのにこのような例外が出るのかわかりません。

リソースエディタでコントロールと変数の追加を行い、静的に用いる場合は出ません。

編集 削除
bigbrother  2010-11-02 11:41:46  No: 72028  IP: [192.*.*.*]

ちなみにこの例外が出ても無視すればコントロールは動作するようです。

編集 削除
bigbrother  2010-11-03 06:45:16  No: 72029  IP: [192.*.*.*]

自己解決いたしました。
ActiveXの問題ではなく、メモリ開放周りの問題でした。
OnNcDestroy内で自身をdeleteするというWeb上の情報を元に作成したダイアログをshared_ptrに格納して使用していたことがこのアサートの原因となっていたようです。

編集 削除