環境:Win2000 VC++.NET MFCでダイアログアプリケーション作成
こんばんわ。タイマー処理について質問させてください。
ボタンを押すイベント後の処理に時間がかかるため、その間ダイアログのはしっこに
「処理中です」というメッセージを点滅表示させたいと思っています。
それでタイマーを使おうとしているのですが、イベントが一つ終わらないと
タイムアウトイベントに来てくれないのでしょうか?(ブレークをかけてみると
おそらくそうなっているような・・・)
void CAAADlg::OnBnClickedABCBtn()
{
m_ed_Msg.SetWindowText(処理中);
SetTimer(1,100,NULL);
//
//なが~い処理
//
m_ed_Msg.SetWindowText(");
KillTimer(1);
}
void CAAADlg::OnTimer(UINT nIDEvent)
{
CDialog::OnTimer(nIDEvent);
CString strMsg;
m_ed_Msg.GetWindowText(strMsg);
if(strMsg==処理中)
{
strMsg=";
}
else
{
strMsg=処理中;
}
m_ed_Msg.SetWindowText(strMsg);
}
OnBnClickedABCBtn()とOnTimer()のクラス名が違いますが、一緒という事で考えてよろしいで
しょうか?
試してみましたが、どうやらOnTimer()に来てないようですね。
長い処理であれば、スレッドを作成して処理したら良いのではないでしょうか?
今のままですとダイアログも動きませんし、ウィンドウが重なれば白くなってしまいますし。
VC++TIPSに作成方法が載っていますので参考にされると宜しいかと思います。
見当違いでしたら、すみません。
ひろぴー様 レスありがとうございます。
スレッドですか、なるほど・・。
挑戦してみます。何かありましたらまた質問させていただくかもしれませんので
その時はよろしくお願いします(_ _