次の方法で共有


エフェクトの変更

エフェクトのパラメーターは変更可能です。エフェクトの再生中も変更が可能な場合があります。これには、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 構造体からのデータ転送は関連するメンバーだけに制限されます。これにより、構造体全体を初期化する必要がなくなり、デバイスに最小限の量のデータを送信するだけで済みます。