プロが教えるわが家の防犯対策術!

VC++初心者です。
以下のソースでエディットボックスのテキストが表示されません。というか、最後のループの時のみ表示されますが、一回一回表示するにはどうしたらいいでしょうか?

void CCRPTC_accessDlg::OnBnClickedOk()
{
 int i;

 CEdit* myEdit1 = (CEdit*)GetDlgItem(IDC_EDIT1);
   ・
   ・
   ・
 for (i=1;i<10;i++){
  if (Ret != SUCCESS)
  {
   myEdit1->SetWindowText("NG!");
  }
  else
  {
   myEdit1->SetWindowText("OK!");
  }
 }
}

A 回答 (3件)

> VBで言うところのDoEventなどの記述が必要ですか?


必要です。この関数を抜けるまで同じウィンドウのあらゆる処理は実行されません。

MFCはよく知らないのですが、
myEdit1->UpdateWindow();
とかやればいいのではないかと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました。
無事動きました。

お礼日時:2005/05/09 13:43

表示は出来たようですね。



後々必要になるはずだから・・・
DoEvantsの代わり

void DoEvents()
{
MSG msg;
while (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
    • good
    • 0
この回答へのお礼

ありがとうございます。助かります。
中身も調べてみようかと思います。

お礼日時:2005/05/09 16:31

>最後のループの時のみ表示されますが、一回一回表示するにはどうしたらいいでしょうか?



一回一回ってのは、何をもって一回と数えるんですか?
PCの処理速度はあなたが思っているほどのんびりしてません。
「?秒おきに表示する」など、ちゃんと処理を組まなければループの一番最後で設定したものしか表示されないのは当然です。

この回答への補足

すみません。
Sleep(1000);
が抜けていました。
本来1秒毎にifで判断してテキスト表示されるべきですが、10秒後にしか表示がされません。
VBで言うところのDoEventなどの記述が必要ですか?

補足日時:2005/05/09 13:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A