処理を中断させたいです。 – プログラミング – Home

処理を中断させたいです。
 
通知
すべてクリア

処理を中断させたいです。


mizuno
 mizuno
(@mizuno)
ゲスト
結合: 19年前
投稿: 1
Topic starter  

VC++6.0 MFC WindowsXP sp2

検索処理を行っている最中に処理を中断したいのですが、
実際にボタンを押すと落ちてしまいます。

IDC_EDIT_SEARCH_FILENAME で定義しているボタンを押下したときの処理を
中断したいです。

void XXXXXView::OnBtnStopSelected()
{
// 検索中止処理
CWnd* pEditWnd = GetDlgItem( IDC_EDIT_SEARCH_FILENAME );
pEditWnd->PostMessage( WM_CLOSE, 0, 0);
}


引用解決済
トピックタグ
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 22年前
投稿: 310
 

検索処理って一体何の?

IDC_EDIT_SEARCH_FILENAME って何のコントロールですか?
名前だけ見ると EditBox 、でもボタンっていうからには Button か CheckBox か。
でも実際に呼んでいるのは CWnd 。さ~っぱり分かりませんて。

何の話かよく分かりませんが、通常、正しい手段で処理を終了させずに強制終了
(この場合Windowの破棄?)を行なうと何が起こるか分かりません。


返信引用
reshia
 reshia
(@reshia)
ゲスト
結合: 20年前
投稿: 117
 

つまり、
1)何か(ファイル?)の検索を行うプログラムです
2)IDC_EDIT_SEARCH_FILENAMEボタンを押すと検索が開始されます
3)途中で「中断」ボタンを押すことで
  検索を(一時)停止することができます(OnBtnStopSelected()が呼ばれる)
とやりたかったのだけれど、
検索を止める(pEditWnd->PostMessage( WM_CLOSE, 0, 0);)と
プログラム自体が落ちます。

ってことでしょうか。
WM_CLOSEを何故送るのかがそもそも疑問(私が知らないだけ?)。
WM_CLOSEを送ったら、プログラムが落ちるのは当たり前じゃ??

検索を止めたいなら、何かしらのループ中で、
検索キャンセルのメッセージが来たかどうかを常に監視する
というようなことをやればいいんだと思うけど。
# もちろんスレッドは必要。
# メッセージっていっても、boolで十分。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました