>>212
>if (GetTickCount()>dwTime+5) dwTime=GetTickCount();
>else return;

これは、一つのif文の中で書けば

if (GetTickCount() > dwTime + 5) {

 dwTime = GetTickCount();

 ゲームの処理(draw()の中身)

}

という流れ。
「前回処理時間から指定時間(5ms)が過ぎていたら、現在の時間を
処理時間として記録し処理を行う」もので、処理を行わない場合には
そのままメインループ(if文の外にあるメッセージポンプ)に処理が
返るから、処理がそこで停まるビジーループにはなりません(あの
ソースももう5年前・・・。RPG関連の記事はそろそろ全面的に書き
直さないといけないですかねえ)。

>while(GetTickCount()<dwTime+5);

だと「指定時間が過ぎるまで」どうなります?