各ループをcdialogを実行する場合と実行できない場合がある無限のスレッド

StackOverflow https://stackoverflow.com/questions/3703320

質問

私はMFCプロジェクトに取り組んでおり、継続的または数秒ごとに実行される別のループが必要であり、ユーザーからの入力を取得するためにダイアログを実行する必要がある場合と必要になる場合があります。私はafxbeginthreadを使用することを考えていましたが、それについて読んだことから、それは実際には連続ループで動作しません。

役に立ちましたか?

解決

それをしないでください。ワーカースレッドでダイアログをリッピングすることはできません。機能するためにメッセージポンプが必要なため、メインスレッドでのみ開始できます。

あなたが望むのが数秒ごとに発射するある種のシグナルであるなら、あなたが望むのは タイマー. 。必要なタイマー期間のタイマーを設定し、メインスレッドが目的のwm_timerメッセージを処理すると、ダイアログをポップアップして実行できます。

ワーカースレッドに何らかの作業を行いたい場合は、ユーザーに情報を尋ねることが含まれている場合と含まれない場合があります。 postmessage() メインスレッドにメッセージを送信するには、ユーザーにデータを要求し、入力データを使用してワーカースレッドに信号を送信することにより、メインスレッドをメッセージを処理します。最後のビットを達成する1つの方法は、呼び出すことです queueuserapc() ワーカースレッドのハンドルとポインターを備えたメインスレッドから、新しく入力されたデータを使用して何かを行う関数へのポインターから。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top