DirectX & C++Builder FAQ

DirectXをC++Builderで使うにはどうすればいいのか?


コンパイルの仕方

Q.C++BuilderでDirectXをコンパイルしたいんですけど?
A.DirectX9はこちらを参照してください。
  DirectX7はこちらを参照してください。
  DirectX5はこちらを参照してください。

DirectDraw

Q.SetCooperativeLevel()の第一引数には何を渡したらいいですか?
A.TForm::Handleを渡してやりましょう。

Q.フルスクリーンモードの初期化がうまく行きません。
A.DirectDrawを初期化する前に、FormはShow()されている必要があります。
  TForm::OnCreateイベントでShow()てから初期化すると良いでしょう。
  FormのBorderStyleはbsNoneを指定しましょう。
  そうしないと、フルスクリーン状態で×ボタンとかが表示されてしまいます。

Q.DirectDrawEnumerateにコールバック関数が渡せないんですけど?
A.通常、いずれかのクラスに含まれる関数は暗黙のうちにthisポインタを引数として受け取ります。
  このため、いずれかのクラスに含まれる関数を渡すと型エラーが発生してコンパイルすることが出来ません。
  渡したい関数をstaticに指定し、DirectDrawEnumerateの第二引数にthisポインタを渡してやるといいでしょう。
  あるいは、渡したい関数をいずれのクラスにも属さないグローバルな関数として宣言してもかまいません。

DirectSound

Q.DSoiund.hでコンパイルエラーが出るんですけど?
A.DSound.hの前にMMSystem.hをincludeしましょう。

Q.SetCooperativeLevel()の第一引数には何を渡したらいいですか?
A.TForm::Hndleを渡してやりましょう。

Q.DirectSoundEnumerateにコールバック関数が渡せないんですけど?
A.通常、いずれかのクラスに含まれる関数は暗黙のうちにthisポインタを引数として受け取ります。
  このため、いずれかのクラスに含まれる関数を渡すと型エラーが発生してコンパイルすることが出来ません。
  渡したい関数をstaticに指定し、DirectSoundEnumerateの第二引数にthisポインタを渡してやるといいでしょう。
  あるいは、渡したい関数をいずれのクラスにも属さないグローバルな関数として宣言してもかまいません。

DirectInput

Q.DirectInputCreate()の第一引数には何を渡したらいいですか?
A.HInstanceというグローバル変数があるのでこれを渡してやりましょう。

Q.SetCooperativeLevel()の第一引数には何を渡したらいいですか?
A.TForm::Handleを渡してやりましょう。

Q.EnumDevicesにコールバック関数が渡せないんですけど?
A.通常、いずれかのクラスに含まれる関数は暗黙のうちにthisポインタを引数として受け取ります。
  このため、いずれかのクラスに含まれる関数を渡すと型エラーが発生してコンパイルすることが出来ません。
  渡したい関数をstaticに指定し、EnumDevicesの第三引数にthisポインタを渡してやるといいでしょう。
  あるいは、渡したい関数をいずれのクラスにも属さないグローバルな関数として宣言してもかまいません。


戻る