TOP今月刊既刊I/OサポートQ&AWeb I/O通販お問い合わせ
 Q&A > [書籍版] DirectX9実践プログラミング 書名検索: 詳細検索...

[書籍版] DirectX9実践プログラミングのQ&A

Q&A一覧
Q

Direct3D9.sln をリビルドするとエラーが出る

Direct3D9.sln をリビルドすると、

error C2146:';'が識別子
'PVOID'の前に必要です  file : winnt  行:222
error C4430:型指定子がありません -intと仮定しました

というエラー表示が続きます。なぜでしょうか?
Visual Studio 2005 Professional Edition とMicrosoft DirectX
SDK(February 2007)をインストールした環境です。
2007年03月23日受付
A
「winnt.h」ファイルの222行目でC2146エラーが発生するというのは、Visual Studio 2005に対応する前の
古いDirectX SDKなどを使った場合に発生するエラーに似ている気がします。
Visual Studio 2005ではC言語の規約が変更されているので、古いコードをコンパイルするとこのようなエラーが出ることがあります。
もしそれが原因だとすると、環境に古いDirectX SDKがインストールされていて、そちらが使われる設定になっている(インストールした
「DirectX SDK (February 2007)」のインクルードファイルやライブラリファイルが最優先で使われる設定になっていない)のではないでしょうか。
VisualSudioのオプション設定で、VC++ディレクトリの 各設定が正しいかどうかを確認してみてください。
最終更新日:2007年08月16日 10時56分18秒
▲このページの上へ
Q

サンプルプログラム「DMSample03」のテンポ変更について

サンプルプログラム、DMSample3 で「再生するMIDIファイルのテンポの変更を行なう」ということを
扱っていますが、このプログラムですと、テンポを変更に使用しているキー(’W’,’E’,’R’)を
押してから実際に変更したテンポが反映されるまでにタイムラグがあるように感じます。
これは、なぜなのでしょうか?
押した瞬間にテンポが変更されるような仕様にしたいのですが、どのようにしたら可能になるのでしょうか?

2006年01月05日受付
A

実際のコードで確認はしていないのですが、遅延の解消には、たとえば
IdirectMusicPerformance8::Invalidateメソッドで現在のキューの内容を消去することなどが考えられると思います。
SDKのヘルプを見る限り、デフォルトでは、およそ1秒分のメッセージが、いつでもキューに準備されているようです。

最終更新日:2007年08月16日 10時53分30秒
▲このページの上へ
Q

第7章DirectShowサンプルをVisual C++6.0で使うためにはどうすればいいのですか。

第7章DirectShowのサンプルは開発環境がVisual C++.NETで書かれていますが、Visual C++6.0で使うためにはどうすればいいのですか。
2006年10月06日受付
A
本書のDirectShowサンプルには、Visual C++6.0用プロジェクト ファイルは含まれておりませんので、Visual C++6.0でサンプル用の新規プロジェクトを作成していただいたうえで、 作成したプロジェクトに本書のDirectShowサンプルの各ファイルや必要なライブラリ(Strmiids.lib)を登録してご利用ください。
最終更新日:2006年10月06日 22時17分47秒
▲このページの上へ
Q

サンプルプログラムをコンパイルするとエラーが出る

DirectX9実践プログラミングのサンプルプログラムについてなんですが,
コンパイルすると以下のように出て失敗してしまいます…

DXGSample01.cpp
DXGSample01.cpp(199) : error C2660: 'ID3DXSprite::Begin' : 関数に 0 個の引数を指定できません。
DXGSample01.cpp(201) : error C2660: 'ID3DXSprite::Draw' : 関数に 7 個の引数を指定できません。

最新の DirectX9.0c を 使っているのですが
古いバージョンのDirectX9.0b に戻さないとコンパイルできないのでしょうか?
それとも、何か変更することによって直るのでしょうか?
2006年10月06日受付
A

「DirectX9実践プログラミング」では、「DirectX 9.0b SDK」を使ったDirectXのプログラミングを解説しております。そのため、「DirectX 9.0b SDK」より新しいバージョンの「DirectX SDK」には 対応しておりません。

ご連絡頂いたエラーは「DirectX 9.0b SDK」より新しい「DirectX SDK」を使った場合に発生するエラーですので、本書のサンプルをコンパイルされる際は、使用される「DirectX SDK」を「DirectX 9.0b SDK」に変更し てください。

また、「DirectX 9.0c」というのは「DirectXランタイム」のバージョンのことだと思いますが、「DirectXランタイム」は最新のものでも問題ございません。ただし、コンパイルには「DirectX 9.0b SDK」が必要です。

最終更新日:2006年10月06日 18時26分20秒
▲このページの上へ