DirectX & C++Builder FAQDirectXを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ポインタを渡してやるといいでしょう。
あるいは、渡したい関数をいずれのクラスにも属さないグローバルな関数として宣言してもかまいません。