エフェクトの変更
エフェクトのパラメーターは変更可能です。エフェクトの再生中も変更が可能な場合があります。これには、IDirectInputEffect::SetParameters メソッドを使用します。
エフェクトの再生中に変更可能なパラメーターは、DIEffectInfo 構造体の dwDynamicParams メンバーでわかります。エフェクトの再生中に、再生中は変更できないエフェクトのパラメーターを変更しようとすると、通常、Microsoft DirectInput はエフェクトを停止し、パラメーターを更新してからエフェクトを再び開始します。この既定の動作は、DIEP_NORESTART フラグを渡すことによってオーバーライドできます。
次のコード例は、「エフェクトの作成」の例で設定されたコンスタント フォースのマグニチュードを変更します。
DIEFFECT diEffect; // Parameters for effect
DICONSTANTFORCE diConstantForce; // Type-specific parameters
diConstantForce.lMagnitude = 5000;
diEffect.dwSize = sizeof(DIEFFECT);
diEffect.cbTypeSpecificParams = sizeof(DICONSTANTFORCE);
diEffect.lpvTypeSpecificParams = &diConstantForce;
hr = lpdiEffect->SetParameters(&diEffect, DIEP_TYPESPECIFICPARAMS);
DIEP_TYPESPECIFICPARAMS フラグの指定により、DIEFFECT 構造体からのデータ転送は関連するメンバーだけに制限されます。これにより、構造体全体を初期化する必要がなくなり、デバイスに最小限の量のデータを送信するだけで済みます。