DIEFFECTATTRIBUTES 结构 (dinputd.h)
DIEFFECTATTRIBUTES 结构描述由力回馈设备支持的每个效果的注册表项的“Attributes”值中包含的信息。
语法
typedef struct DIEFFECTATTRIBUTES {
DWORD dwEffectId;
DWORD dwEffType;
DWORD dwStaticParams;
DWORD dwDynamicParams;
DWORD dwCoords;
} DIEFFECTATTRIBUTES, *LPDIEFFECTATTRIBUTES;
成员
dwEffectId
指定传递给驱动程序以标识效果的任意 32 位值。 驱动程序接收此值作为 IDirectInputEffectDriver::D ownloadEffect 方法的 dwEffectID 参数。
dwEffType
描述效果的类别和功能。 此成员必须包含以下值之一:
DIEFT_CONSTANTFORCE
该效果表示常量力效果。 创建或修改常量力效果时,DIEFFECT 结构的 lpvTypeSpecificParams 成员指向 DICONSTANTFORCE 结构,并且 DIEFFECT 结构的 cbTypeSpecificParams 成员设置为 size of (DICONSTANTFORCE) 。
DIEFT_RAMPFORCE
该效果表示渐变力效果。 创建或修改渐变力效果时,DIEFFECT 结构的 lpvTypeSpecificParams 成员指向 DIRAMPFORCE 结构,并且 DIEFFECT 结构的 cbTypeSpecificParams 成员设置为 size of (DIRAMPFORCE) 。
DIEFT_PERIODIC
该效果表示定期效果。 创建或修改定期效果时,DIEFFECT 结构的 lpvTypeSpecificParams 成员指向 DIPERIODIC 结构,DIEFFECT 结构的 cbTypeSpecificParams 成员设置为 size of (DIPERIODIC) 。
DIEFT_CONDITION
效果表示条件。 创建或修改条件时, DIEFFECT 结构的 lpvTypeSpecificParams 成员指向 DICONDITION 结构的数组, (每个轴) 正好一个 DICONDITION 结构或一个 DICONDITION 结构,并且 DIEFFECT 结构的 cbTypeSpecificParams 成员分别设置为 sizeof (DICONDITION) 或 cAxis * sizeof (DICONDITION) 。 如果 cbTypeSpecificParams 设置为 sizeof (DICONDITION) ,则效果表示可旋转的单轴条件。 如果 cbTypeSpecificParams 设置为 cAxis * sizeof (DICONDITION) ,则效果表示多轴条件,每个 DICONDITION 结构应用于 rgdwAxes 列表中的相应轴。
DIEFT_CUSTOMFORCE
该效果表示自定义强制效果。 创建或修改自定义强制效果时,DIEFFECT 结构的 lpvTypeSpecificParams 成员指向 DICUSTOMFORCE 结构,并且 DIEFFECT 结构的 cbTypeSpecificParams 成员设置为 size of (DICUSTOMFORCE) 。
DIEFT_HARDWARE
该效果表示特定于硬件的效果。 硬件供应商需要向应用程序编写器提供有关如何使用效果的其他文档。 除了类别代码之外, dwEffTtype 成员还可以包含描述效果功能的以下标志的零个、一个或多个:
DIEFT_FFATTACK
此效果的效果生成器支持攻击信封参数。 如果效果生成器不支持攻击,则效果将忽略 DIENVELOPE 结构的攻击级别和攻击时间参数。
DIEFT_FFFADE
此效果的效果生成器支持 fade 参数。 如果效果生成器不支持淡化,则效果将忽略 DIENVELOPE 结构的淡出级别和淡出时间参数。 如果未设置DIEFT_FFATTACK或DIEFT_FFFADE,则效果不支持信封,并且将忽略提供的任何信封。
DIEFT_SATURATION
此效果的效果生成器支持条件效果的饱和度。 如果效果生成器不支持饱和,则条件产生的力仅受设备可以生成的最大力的限制。
DIEFT_POSNEGCOEFFICIENTS
此效果的效果生成器支持条件的两个系数值:一个用于轴的正位移,一个用于轴的负位移。 如果设备不支持这两个系数,则忽略 DICONDITION 结构中的负系数,并在两个方向使用正系数。
DIEFT_POSNEGSATURATION
效果的效果生成器支持正负力输出的最大饱和度。 如果设备不支持这两个饱和度值,则忽略 DICONDITION 结构中的负饱和度,并在两个方向使用正饱和度。
dwStaticParams
描述效果支持的参数。 例如,如果设置了DIEP_ENVELOPE,则效果支持信封。 所有效果应至少支持DIEP_DURATION、DIEP_AXES和DIEP_TYPESPECIFICPARAMS。 应用程序尝试使用设备不支持的效果参数不是错误。 不受支持的参数只会被忽略。 此值可以是零、一个或多个以下标志:
DIEP_DURATION
指示驱动程序支持更改 dwDuration (在效果未播放时查看效果的 DIEFFECT 结构) 。
DIEP_SAMPLEPERIOD
指示驱动程序支持更改 dwSamplePeriod (在效果未播放时查看效果的 DIEFFECT 结构) 。
DIEP_GAIN
指示驱动程序支持更改 dwGain (在效果未播放时查看效果的 DIEFFECT 结构) 。
DIEP_TRIGGERBUTTON
指示驱动程序支持更改 dwTriggerButton (在效果未播放时查看效果的 DIEFFECT 结构) 。
DIEP_TRIGGERREPEATINTERVAL
指示驱动程序支持更改 dwTriggerRepeatInterval (在效果未播放时查看效果的 DIEFFECT 结构) 。
DIEP_AXES
指示驱动程序支持更改 cAxes 和 rgdwAxes (在效果未播放时查看效果的 DIEFFECT 结构) 。
DIEP_DIRECTION
指示驱动程序支持更改 cAxes 和 rglDirection (在效果未播放时看到效果的 DIEFFECT 结构) 。 (DIEFFECT 结构的 dwFlags 成员通过DIEFF_CARTESIAN或DIEFF_POLAR指定应在其中解释值的坐标系。)
DIEP_ENVELOPE
指示驱动程序支持更改 lpEnvelope (在效果未播放时看到效果的 DIEFFECT 结构) 。
DIEP_TYPESPECIFICPARAMS
指示驱动程序支持更改 cbTypeSpecificParams 和 lpTypeSpecificParams (在效果未播放时查看效果的 DIEFFECT 结构) 。 请注意,DIEFFECT 结构的 lpTypeSpecificParams 成员指向的缓冲区必须在效果 (的生存期内保持有效,或直到类型特定的参数设置为) 的新值。 DirectInput 不会创建缓冲区的专用副本。
dwDynamicParams
描述在播放效果时可修改的效果参数。 如果应用程序尝试在播放效果时更改参数,而驱动程序不支持动态修改该效果,则驱动程序将返回DIERR_EFFECTPLAYING。 此成员使用与 dwStaticParams 成员相同的标志,不同之处在于,这些标志被解释为描述驱动程序是否可以在播放效果时修改效果的参数,而不是在未播放时修改该效果的参数。
dwCoords
一个或多个坐标系标志 (DIEFF_CARTESIAN、DIEFF_POLAR DIEFF_SPHERICAL) 指示效果支持的坐标系。 必须至少支持一个坐标系。 如果应用程序尝试在不支持的坐标系中设置方向,DirectInput 会自动将其转换为设备支持的坐标系。
注解
有关 DIEFFECT、DICONSTANTFORCE、DIRAMPFORCE、DIPERIODIC、DICONDITION、DICUSTOMFORCE 和 DIENVELOPE 结构的信息,请参阅 DirectX SDK 的 DirectInput 部分。
要求
要求 | 值 |
---|---|
Header | dinputd.h |