ある処理が終わるまで、間をとり、次の処理を行うには?


みす  2004-04-15 11:17:46  No: 53488

質問は、題名の通りです。
具体的には、アニメーション再生の関数と別の処理の関数があり
アニメーションを再生しきった後に、さらに一秒程度の間を置いた上で
次の処理の関数を呼び出すようにしたいのです。

思いついた方法が、Sleepを使うことと、SetTimerを使うことだったんですが
Sleepでは、処理が全部停止してしまうので問題外の結果に終わり
SetTimerは、タイマーセットの直後に間をおかずに一度処理を行い、次から間をおいて処理を繰り返すようだったので、これもダメでした。

何か良い方法はないでしょうか?

開発環境はWinXPとVisualC++です。


冬夜  2004-04-15 18:04:09  No: 53489

下のコードみたいなのでどうでしょう。

DWORD dwStart = timeGetTime();
DWORD dwWait = 1000;
MSG   msg;

while((timeGetTime() - dwStart) < dwWait)
{
    if(PeekMessage(&msg,hWnd,0,0,PM_REMOVE))
    {
  TranslateMessage(&msg);
  if(msg.message==WM_CLOSE)
      break;
  else
               DispatchMessage(&msg);
    }
}


YuO  2004-04-15 20:32:58  No: 53490

WM_TIMERを使う,の意味を間違えていませんか?

1. アニメーションの再生が終了する
2. SetTimerを発行する
3. WM_TIMERへの応答又はTimerProcにおいてKillTimerと「次の処理」を行う


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加