最初は、STATE_IDLEにいて、描画が始まるときにSTATE_RENDERに切り替わります。描画が完全に終了したら、状態は再びSTATE_IDLEに戻って、待機します。時に(処理をしていないことを意味する)0を返すことにします。関数の呼び出しで、初期状態やレイトレースするピクセルの初期位置を指定します。}次に、ボタンを押したときの描画関数の呼び出しプログラムを変更しましょう。呼ぶことによって、現在どのピクセルまで処理を終えているかが一目でわかるようにしています。関数を1000回ほどまわしています。終えるたびにいちいち再描画していたら非常に遅かったので、再描画の回数を減らすための処理です。1000回というのは、付加を見て決めた適当な数なので、タイマーを使って描画回数を制御したほうがよりよくなると思います。プログラムを強制的に中断できるようにしています。いう関数も追加しています。関数の合間に、たまったイベントを吐き出させるためのものです。追加したことによって、描画中のウィンドウの移動やプログラムの終了が可能になります。これは決まった構文ですから、そのままコピーしてお使いください。}終了フラグは、OKボタンやキャンセルボタンを押したときにたつようにします。フラグを立てるコードを追加します。呼び出されてフラグがたつことになります。ウィンドウの右上の×ボタンを押したときも終了するようにしましょう。終了するためには、終了イベントのときに呼ばれる関数を追加します。この関数の追加をするためには、MFCの流儀としてクラスウィザードを使います。メニューの「表示」-「ClassWizard」を選択するか、ctrl+wでクラスウィザードをひらきます。「メッセージマップ」の「オブジェクトID」をダイアログのクラスにして、「メッセージ」の「WM_CLOSE」をダブルクリックします。すると、下の「メンバ関数」のところに「OnClose」のイベント関数が作られるので、その部分をダブルクリックします。すると、ダイアログのCPPファイルに関数が自動的に作られるので、ここにコードを追加します。}■最後に全然、レイトレっぽくありませんね。次は、反射、屈折を取り入れてみましょう。もどるimagire@gmail.com。