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 を返す。
}