Mission3: DirectDraw を実装する。


実は、DirectX 8.0 より先の DirectX では、DirectDraw はサポートされなくなるようだ。
つまり、次のバージョンあたりでは完全に消滅する事も考えられなくは無いが、
今の所、Direct3D より、 DirectDraw の方がとっつきやすい(と思う)。

ここはとりあえず、DirectDraw を実装してみよう。

【ステップ1】

 今度は、Mission2 の続きである。
 VisualC++ の画面は、以下のようになっているはずである。

【Misson2 画面】
図1 Mission2画面


【ステップ2】

 プロジェクトを改造して行く。 以下の指令に従うべし。

【ステップ2−1 ファイルの新規作成】
解説

左の図2のようにして、
「ファイル」メニューから新規作成を選ぶ。
すると下の図3のようなウインドウが現れる
はずだ。
図2 メニュー操作


【ステップ2−3 ヘッダファイルの追加】
解説
ウインドウの上部 (タイトルバーのすぐ下)に、
「ファイル」「プロジェクト」「ワークスペース」「その他のドキュメント」 という四つのタブがある。

その内の「ファイル」をクリックして、以下の作業をする。

作業1:
左の図3のようにして、アイコンが並んでいる欄より、
C/C++ ヘッダーファイルを選択(マウスでクリック)

作業2:
「ファイル名」という欄に、キーボードから、
ddmain.h と入力する。

できたら「OK」ボタンをクリックだ。
図3 新規作成


【ステップ2−4 ファイルの新規作成 Part2】
解説
再度、ファイルの新規作成を行う。

「ファイル」メニューより、「新規作成」を選択。
図4 メニュー操作


【ステップ2−5 プログラムファイルの追加】
解説

再度「ファイル」タブをクリックして、以下の作業をする。

作業1:
左の図3のようにして、アイコンが並んでいる欄より、
C/C++ ソースファイルを選択(マウスでクリック)

作業2:
「ファイル名」という欄に、キーボードから、
ddmain.cpp と入力する。

できたら「OK」ボタンをクリックだ。

次に、ワークスペースの、ddmain.cpp をクリック。
画面は、次の図6のようになったはずだ。
図5 新規作成 Part2


【ステップ2−6 プログラム入力】
解説
Mission2 の時にすでに解説したが、
ここで、もう一度解説しよう。
画面の左側部分で、
下に、"Class View","Resource View","File View"
の三つのタブのある部分。
ここをワークスペースという。

まず、"File View" タブをクリックして、

ワークスペース内の"mission1 ファイル"
と書かれた部分の
横チョの [+] をクリック

次に、"Source Files" の横チョもクリックして、
その中の、"ddmain.cpp" をダブルクリックだ。

そしたら次へ。
図6 空のプログラム


【ステップ2−7 プログラム入力】

今度はちょっと長いプログラムを入力する。 ただ、紙面の都合で、ここには書ききれない。
なので、プログラムリストはここをクリック。

キーボード入力がうざいという不精モノは、ここからダウンロードだ。
(ダウンロードがうまく行かない人は、右クリックして、「対象をファイルに保存」をして下さい。)


【ステップ2−8 ヘッダファイルの入力】
解説
ステップ2−6と同様にして、
"ddmain.h" を開く。

まず、ワークスペース内に着目
"File View" タブをクリックして、

次に、"Header Files" の横チョの [+] をクリックして、
その中の、"ddmain.h" をダブルクリックだ。

次に、ヘッダーファイルの編集を行う。
図7 空のヘッダーファイル


【ステップ2−9 ヘッダーファイルの編集】

またまたキーボード入力だ、またしても紙面の都合で、ここには書ききれない。
なので、プログラムリストはここをクリック。

キーボード入力がうざいという不精モノは、これもここからダウンロードだ。
(ダウンロードがうまく行かない人は、右クリックして「対象をファイルに保存」は言うまでもないか。)


【ステップ2−10 ライブラリのリンク】
解説
次に、「プロジェクト」メニューから
「設定」を選ぶ。

すると、ステップ2−11で説明する、図9の画面が出てきた
はずだ。

次へすすむ。
図8 設定メニュー


【ステップ2−11 ライブラリのリンク Part2】
解説
ウインドウの上部に、
"一般","デバッグ","C/C++"・・・・
といった表記があるが、「リンク」タブをクリック。

すると左の画面が出てきたはずだ、

オブジェクト/ライブラリ/モジュールという欄に、

dxguid.lib ddraw.lib largeint.lib

と三つのファイル名を指定しておく。

できたら、「OK」ボタンをクリックしよう。

図9 リンカ設定


【ステップ2−12 アプリケーションクラスの改造 Part1】
解説
ワークスペースより、"mission1.cpp"
をダブルクリックする。
すると左のような画面になったはずだ。

続いて、

#include "mission1.h"

の後に、

#include <ddraw.h>
#include "ddmain.h"
#include <math.h>

の三行を書き足す。

さらに、以下の二行を削除する。

#include "mission1Doc.h"
#include "mission1View.h"

図10 アプリケーションクラスの改造


変更前 変更後
図11 アプリケーションクラスの改造点



【ステップ2−13 ビットマップの挿入 Part1】
解説
「挿入」メニューより、「リソース」を選択。

そうすると、次の、図13のようなウインドウが
表れたはずだ。
図12 リソースの追加


【ステップ2−14 ビットマップの挿入 Part2】
解説
左のダイアログウィンドウより、「Bitmap」を選択

新規作成をクリック。

すると、何も描かれていないビットマップリソースが
挿入されたはずだ。

とりあえず、リソースの名前が、
「IDB_BITMAP1」である事を確認する。

名前が違っていたら、「IDB_BITMAP1」に変更する。

変更の仕方は、以下を参照の事。
図13 リソースの挿入ダイアログ


【ステップ2−14.5 リソース名の変更方法】 解説
左図は、ワークスペース内で、"Resource View" タブ
を選択し、"mission1 リソース" の横チョの[+]をクリック
"Bitmap" の横チョの[+]をクリック
ほんでもって、さっき挿入した Bitmap リソースの上で
右クリックした状態である。

右クリックすると、左図のようにメニューが
でてくるので、その中の"プロパティ"を選択すると
下の画面が出てくる。

下の画面の ID の項目を編集して、
この"ビットマップ プロパティー" ダイアログを閉じれば
リソースの名称変更は完了である。
図14 リソースの名称変更


【ステップ2−15 ビットマップの挿入 Part3】
解説
ビットマップリソースを新規作成すると、
自動的に左の様な画面になったはずだ。

ワークスペースは、"Resource View"に変わっている。

ワークスペースの、"mission1リソース" の横チョの[+]を
クリックして、"Bitmap"の横チョの[+]をクリックして、
IDB_BITMAP1 をダブルクリックすれば、いつでもこの画面に戻ってこれる。

空っぽも寂しいので、何か描いておこう。

僕の絵はヘタクソだが、みんなはもう少しマシなもの
を描いてくれ。
図15 ビットマップの編集


【ステップ2−16 InitInstance の改造 Part1】
解説
再度 ClassWizard だ。

クラス名に CMission1App を選択する。

メッセージに、InitInstance を選択する。

このプログラムは、Mission2 で改造したものだが、
次のステップで、一行書き加える。
図16 InitInstance 再改造 Part1


【ステップ2−17 InitInstance の改造 Part2】

関数 InitInstance の最後の部分に、以下のように一行書き足す。

【変更前】

m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
return TRUE;


【変更後】

m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
::InitDD(m_pMainWnd->GetSafeHwnd());
return TRUE;

InitDD は、先ほどの ddmain.cpp 内にある関数だ。解説は、ここをクリック



【ステップ2−18 ExitInstance ハンドラの作成と改造】
解説
再度 ClassWizard だ。

クラス名に CMission1App を選択する。

メッセージに、ExitInstance を選択する。

「関数の追加」ボタンをクリックしてから、
「コード編集」ボタンをクリック。

そしたら、図18の要領で、一行書き加える
図17 ExitInstance ハンドラの作成


変更前 変更後
図18 ExitInstance の改造点




【ステップ3】

プロジェクトのビルドと実行を行う。
つまり、VisualC++ にプログラムを生成させ、実行して動作を確認する
のである。

以下の指令に従うべし。

「F・5キーを押す」

すると、下のような画面が表示されたはずだ。



これで、Mission3 は終了。

動作確認できたら、Alt-F・4

えっ! Mission2 から何も進展してないじゃないかって?

確かにそうみえる。
今回はDirectDraw の初期化と終了をしているだけで、
DirectDraw を使用してはいないのだ。

次に、このアプリケーションの発展として、
DirectDraw を使用してみる。
戻る