【Misson3 画面】 |
![]() |
図1 Mission3画面 |
【ステップ2−1 OnIdle イベントハンドラの作成】 | 解説 |
![]() |
おなじみの ClassWizard を立ち上げる。 Control-W が近道だ。 クラス名に、CMission1App を選択 メッセージ欄は、OnIdle を選択する。 「関数の追加」をクリックして、 「コード編集」をクリックする。 すると下の図3のようなウインドウが現れるはずだ。 |
図2 イベントハンドラの作成 |
【ステップ2−2 OnIdle イベントハンドラ】 | 解説 |
![]() |
ClassWizard を抜けると、左のようなプログラムが表示されたはずだ。 実はこのOnIdle プログラム。 これは、PC ゲーム開発ではもっとも中心となるプログラムだ。 通常、全てのゲームの処理は、ここから呼び出される事になる。 ただし、MFC を使わない場合は話は別だが。 次のステップは、このプログラムの改造である。 |
図3 OnIdle イベントハンドラ |
【ステップ2−3 OnIdle の改造】
OnIdle 関数は、Windows システムがCPUに空きがある限りにおいて、
呼び出すハンドラである。
ここを改造すれば、ゲームやマルチメディアに必要なリアルタイム処理が可能になる。
ここでは、以下の様に改造しよう。
【ステップ4−1 マウスカーソルの消去 Part1】 | 解説 |
![]() |
またまた、ClassWizard を起動する。 何度も言うようだが、Control-W が速い。 クラス名に、CMainFrame を選択。 そして、メッセージ欄から、WM_SETCURSOR を選択する。 そして、「関数の追加」をクリック。 ほんでもって「コード編集」をクリック。 ほんでもって、ステップ4−2へ。 |
図5 OnSetCursor ハンドラの作成 |
【ステップ4−2 マウスカーソルの消去 Part2】 | 解説 |
![]() |
左の図6のようなリストが表示されたはずだ。 これを、ステップ4−3の様に書きかえる。 |
図6 OnSetCursor イベントハンドラ |
【ステップ4−3 マウスカーソルの消去 Part3】
ステップ4−2で作成した関数を、
ここでは、以下の様に改造する。
【ステップ4−4 キャラの背景が消えない様にする Part1】 | 解説 |
![]() |
再度 ClassWizard だ。 クラス名に CMission1App を選択する。 メッセージに、InitInstance を選択する。 このプログラムは、Mission2 で改造したものだが、 次のステップで、一行書き加える。 |
図7 InitInstance 再改造 Part1 |
【ステップ4−5 キャラの背景が消えない様にする Part2】 | 解説 |
![]() |
左記のように、InitInstance 関数の末尾に、 ::DDSetColorKeyFromPoint(g_pDDSOne,0,0); という一行をつけ加える。 末尾といっても当然 retuern 文の前だ。 return 文の後に書き加えても実行されない。 この行が何をしているかというと、Mission3 で描いた キャラの絵が入ったサーフェイス(g_pDDSOne) の座標(0,0)つまり左上すみの座標の色を カラーキー (透過色)として指定している。 |
図8 InitInstance 再改造 Part2 |
【ステップ4−6 キャラの背景が消えない様にする Part3】 | 解説 |
![]() |
再度 ClassWizard を立ち上げて、 クラス名 CMission1App メッセージ OnIdle を選択し、「コード編集」をクリック。 |
図9 OnIdle 再改造 |
【ステップ4−6 キャラの背景が消えない様にする Part4】
【変更前】