Microsoft DirectX 8.0 (C++) |
コールバック関数にはさまざまな目的および用途がある。このため、通常の関数と同様、コールバック関数についても、各関数のトピックで説明する。ただし、コールバック関数のリファレンスは、通常の API のリファレンスと異なり、その関数を実装する方法を示すテンプレートになっている。コールバック関数のリファレンスは、次の情報を提供する。
コールバック関数は、CALLBACK 型または WINAPI 型として宣言する。どちらのタイプを使用してもよい。関数名は自由に付けられる。ドキュメントで使用されている名前は、コールバック関数の単なる便宜上のラベルである。
リファレンスの説明に従って関数を実装する。実装方法の詳細は、各関数やアプリケーションの要件によって異なる。さまざまなコールバック関数の実装方法の例については、サンプル コードを参照すること。
関数へのポインタを適切な Microsoft® DirectX® コンポーネントに渡す。DirectX コンポーネントは、この関数ポインタを使って関数を呼び出す。このポインタの渡し方は、関数によって異なるので、詳細については各関数のリファレンスを参照すること。
次のコードは、Microsoft DirectInput® Joystick サンプルの一部である。このコードには、ジョイスティックの軸を列挙するために使用される DIEnumDeviceObjectsCallback の実装の基本的な要素が含まれている。
//関数の宣言。 BOOL CALLBACK EnumAxesCallback( const DIDEVICEOBJECTINSTANCE* pdidoi, VOID* pContext ); ... //IDirectInputDevice8::EnumObjects メソッドを呼び出して //DirectInput への関数ポインタを渡す。 if ( FAILED( hr = g_pJoystick->EnumObjects( EnumAxesCallback, (VOID*)hDlg, DIDFT_AXIS ))); ... //関数の実装。 BOOL CALLBACK EnumAxesCallback( const DIDEVICEOBJECTINSTANCE* pdidoi, VOID* pContext ) { //2 つのパラメータで渡された情報を処理する。 //次のデバイス オブジェクトを要求する場合は DIENUM_CONTINUE を返す。 //列挙を停止する場合は DIENUM_STOP を返す。 }