- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VC++2008 の中断/再開ボタンについて)
VC++2008の中断/再開ボタンの処理について
このQ&Aのポイント
- VC++2008のMFCにて開発している中断/再開ボタンの処理方法について教えてください。
- 処理時間が長いため、進行状況ダイアログに中断ボタンを配置し、押下すると処理を一時中断し、名称が「再開」に変わるようにしたいです。
- WaitForSingleObject関数を使用して実現できると思いますが、HANDLE hHandleの形式について詳しく教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
別のスレッドの中断、再開をモードレスダイアログで制御したいということであれば、ResumeThread、SuspendThreadを使ってみてはどうでしょう?
その他の回答 (1)
- reset_cat
- ベストアンサー率68% (94/138)
回答No.1
hHandleにはCreateMutex、CreateEventなどの同期オブジェクトを作成したときのハンドルを指定します。 ただ、forループで処理を走らせているというのは別スレッドになっているのでしょうか?でないと画面更新が行われないので、ボタンを押しても反応しないのではないかな~と・・・
質問者
お礼
ご返答ありがとうございます。 同期オブジェクトでしたか。 特に作成はしないので、SleepEX関数のが良いのかな? forループのかかっている処理と、画面の処理とは 別スレッドになっています。
お礼
ResumeThread、SuspendThreadですか!なるほど。これは知りませんでした。 DWORD ResumeThread( HANDLE hThread // スレッドのハンドル ); ですが、HANDLE hThreadを取得するには「GetSafeHwnd();」にて取得でよろしいのでしょうか? GetSafeHwnd()を使用した所、認識されませんでした。。。 あと、私自身別スレッドと認識していますが 確認させて下さい。 スレッドA(処理のみ) スレッドB(モードレスダイアログクラス) ↓ ↓ モードレスダイアログ表示 ↓ ↓ モードレスダイアログの中断ボタン押下 ↓ ↓ ↓ モードレスダイアログの再開ボタン押下 モードレスダイアログ終了 上記のような形で、別スレッドと呼べるのでしょうか? 上記では別スレッドとは呼べなくて スレッドAからスレッドC(処理のみ)を呼び、 スレッドCにてモードレスダイアログを表示しなければならないのでしょうか? 申し訳ありませんが、重ね重ね宜しくお願いします。
補足
当初の質問とは別の質問となってしまいましたので 一旦締めさせて頂きます。 ありがとうございました。