NKC_DShow.cppファイルの組み込み

DirectShowが簡単に利用できるように、必要な処理を関数化したソースファイルを用意した。このソースファイルを既存のプロジェクトに組み込み、利用する。

NKC_DShow.cppおよびNKC_DShow.h

前準備

上記リンクからファイルをダウンロードし、解凍すると、「NKC_DShow.cpp」「NKC_DShow.h」の2つのファイルが現れる。これらを、組み込みたいプロジェクトのフォルダに配置する。

なお、このプログラムは、共通ヘッダ・ファイル(NKC_Common.h)が存在するプロジェクトに組み込むことを前提として作成しているので、ソース分割を行っていない場合は7章を見ながらソース分割をしておくこと。

プロジェクトの設定を変更

DirectShowを使えるようにプロジェクトの設定を変更する。

  1. 「プロジェクト」→「設定」を選択
  2. 「リンク」タブをクリックし、「オブジェクト/ライブラリ モジュール」の先頭にStrmiids.libライブラリを追加
  3. 追加したら「OK」ボタンをクリック

プロジェクトへ追加

プロジェクトのフォルダに配置した2つのファイル(NKC_DShow.cpp、NKC_DShow.h)を自分のプロジェクトにインポートする。

  1. 「プロジェクト」→「プロジェクトへ追加」→「ファイル」を選択
  2. 「NKC_DShow.cpp」「NKC_DShow.h」を選択して「追加」ボタンをクリック

NKC_Common.hの修正

共通ヘッダ・ファイル「NKC_Common.h」にdshow.hNKC_DShow.hをインクルードする。

//-----------------------------------------------------------------------------
// 共通ヘッダ・ファイル
//  Copyright NKC Game Staff(←自分の名前) 
//-----------------------------------------------------------------------------
#include <stdio.h>
#include <windows.h>    // WindowsAPIを使用可能にする
#include <windowsx.h>
#include <d3d8.h>       // DirectX8ヘッダファイル
#include <d3dx8.h>      // D3DXヘッダファイル
#include <dshow.h>      // DirectShowを使用可能にする
・
・
・
// 自作ヘッダ・ファイルの組み込み
#include "NKC_Public.h"
#include "NKC_DGraphics.h"
#include "NKC_DShow.h"
#include "start.h"
#include "game.h"
#include "enemy.h"
・
・
・

WinMain.cppの修正

ムービーの再生は、専用のウィンドウ領域で行われる。その際、通常の描画処理が行われるとムービー画面が上書きされてしまう。そのため、ムービーを再生しているときは描画処理が行われないように、WinMain.cppUpdateFrame関数を次のように修正する。

//-----------------------------------------------------------------------------
// 関数名 : UpdateFrame()
// 機能概要: ゲームメイン処理
//-----------------------------------------------------------------------------
void UpdateFrame(void)
{
    ・
    ・
    ・
    /* シーン終了 */
    gl_lpD3ddev->EndScene();
    /* フリップ(ムービー再生中はフリップを行わない) */
    if ( g_movieFlg == false ) gl_lpD3ddev->Present(NULL, NULL, NULL, NULL);

}

※以上の修正を行ったらビルドを実行し、エラーが出ないことを確認する。


BACK(DirectShowについて) NEXT(ロゴムービーが流れてからスタート画面を表示させるには?)