私はダイアログベースのMFCゲームをやっています。 ゲーム中にバトルフェイズがあり、少し遅れて画面に各テキストを表示したいのですが、 睡眠を試みてCTimeを試みましたが、どちらの戦闘でも最後のテキストだけが表示されます... ここコード例...遅延ウィンドウがテキストをmfcに表示
void CDNDPprojectDlg::OnBnClickedAction()
{
CString Damaged;
damage=me->Attack(enemy,WeID);
SDialog.Format(_T("You done %d damage, using %s,\r\n %s has %d HP left"), damage,Damaged,monName,enemy->getHP());
Output.SetWindowTextW(SDialog);
if(enemy->getHP() <1)
{
Won();
return;
}
NextAttack();
if(me->getHP() <1)
{
Died();
return;
}
}
スリープ(700)があります。遅れても最後のものだけを表示します
Output.SetWindowTextW(SDialog);
私はスレッドの何かを推測します。私を助けてください。
ありがとう
素晴らしい!あなたは私のヒーローです!ありがとう! – secret
恥ずべきではありません。このパターンはしばしばPeekAndPumpと呼ばれます。すなわち、メッセージがメッセージキュー内で待機しているかどうかを確認し、そうであればそれらをディスパッチ(ポンプ)する。 – acraig5075
ハハ - はい - それはVisual Basicへの参照のために恥ずかしいです - 私たちはすべてC++ snobsです、そうではありませんか? :)これは、(ダイアログの破壊のような)メッセージの覗き見やポンピングで多くのことが起こることがあるので、リフレッシュを処理する方法の中で最もクリーンではない...しかし、それは難しいです。 – BadJerry