5

Internet Explorer Web ブラウザー コントロールを埋め込むこのモードレス MFC ダイアログがあります。

CWndコントロールは、Visual Studio によって生成された ActiveX ラッパーから直接派生しCDialogDDX_Control(pDX, IDC_EXPLORER, m_explorer);.

2つの問題があります。

問題#1:

モードレスであるため、new/Create() を使用して、次に DestroyWindow()/delete (PostNcDestroy 内) を使用して、自分の好みでダイアログを開始および停止します。

問題は、IE コントロールが Flash ビデオ (通常の YouTube のもの) の読み込みを開始したときに始まります。IE コントロールを閉じてダイアログを破壊すると、ビデオはまだ読み込まれます! 完全にキャッシュされるまで。親ダイアログが PostNcDestroy を通過し、すべてのメモリが解放された場合でも、Flash ActiveX スレッドは残り、実行を続けます。

何をすべきか?その子 Web コントロールとそのすべてのスレッドを本当に「殺す」にはどうすればよいですか?

問題#2:

Web ブラウザー コントロールは、ダイアログの全領域をカバーします。OnMouseMove()親ダイアログまたは Web ブラウザー マッピング クラスでインターセプトできません。何を与える?

ありがとう!


"掃除"

PostNcDestroy() で「これを削除」 - もちろん基本関数を呼び出します。もっとあるべきですか?何?ダイアログはその子を適切に処理するべきではないでしょうか?

Web コントロールで DestroyWindow を明示的に呼び出すか、WM_DESTROY、WM_CLOSE、さらには WM_QUIT などのメッセージを送信/投稿しようとしましたが、何もしませんでした。

問題#2:

いいえ、インデントのように、コントロールはすべてのスペースを取り、それが一番上にあるので、マウスアクションは「下」に送信されないと思います:)?しかし、なぜ彼自身の OnMouseMove が呼び出されないのでしょうか? CWndから直行するから?道に迷いました...

4

1 に答える 1

3

問題 1) ウィンドウを破棄する前に myBrowser.navigate("about:blank") を試してください。

于 2008-09-17T20:38:17.133 に答える