メッセージを投稿して進行状況バーを更新するウィンドウの HWND を渡すスレッドがあります。ただし、ユーザーは、このスレッドの進行状況も表示したい別のウィンドウ (モーダル) に移動できます。最初の HWND を渡すのは明らかに簡単ですが、スレッドが実行されたら、新しいウィンドウにメッセージを投稿するようにスレッドを迂回させるにはどうすればよいですか? これは C++ ワーカー スレッドです。Windows 7、MFC、C++ を使用しています。
2 に答える
0
2 つのアプローチがあります。1 つは Daniel の方法で、UI ウィンドウから進行状況情報をポーリングします。必要なのは、スレッド実装クラス (または同等の無料関数) のスレッドセーフな 'int GetProgressPercent() const' メンバーだけです。
もう 1 つのアプローチは、進行状況が発生したときにワーカー スレッドで PostMessage または PostThreadMessage を使用し、反対側でバーを調整するメッセージを処理することです。
いずれかの主な問題は、有効期間の問題を処理し、実際に既になくなっているオブジェクトまたは HWND への呼び出しを防止することです。そのため、PostThreadMessage の方法はおそらく最も安全なベースラインです。メイン スレッドがそこにあり、他のすべてのスレッドを管理し、プログラムの全体的な状態を追跡して、ライブ ウィンドウに意味のあるディスパッチを行うか、何も行わないかを追跡します。しかし、それは最も複雑でもあります。
于 2013-06-09T10:52:38.827 に答える