MIXERCONTROLDETAILS结构体定义
MIXERCONTROLDETAILS
typedef struct{
DWORD cbStruct;
指示出MIXERCONTROLDETAILS结构的大小(字节单位),这个大小必须足以包括基本的MIXERCONTROLDETAILS结构。当mixerGetControlDetails返回,该成员包括了返回信息的实际大小。返回信息不超过请求的大小,也不能小于基本的MIXERCONTROLDETAILS结构。
DWORD dwControlID;
将要被获取或设置特性的控制标识符。
DWORD cChannels;
要控制的声道数目,取下列值:
0: 当控制类型为MIXERCONTROL_CONTROLTYPE_CUSTOM
1: 当控制类型为MIXERCONTROL_CONTROLF_UNIFORM时或应用程序要统一地对待所有声道时
MIXERLINE.cChannels:当需要控制一个线路的所有声道时
* 应用程序不能将cChannels定义为(1,音频线路声道数目)区间里的值,例如,对于四声道线路,定义为2、3是非法的。对于非定制(noncustom)控制类型,该值不能为0。
union{
HWND hwndOwner;
混音控制的定制对话框的窗口句柄,该成员用于mixerSetControlDetails函数定义了MIXER_SETCONTROLDETAILSF_CUSTOM标志的时候。
DWORD cMultipleItems;
要控制的声道的每声道乘数项,取下列值:
0: 除了MIXERCONTROL_CONTROLF_MULTIPLE
和MIXERCONTROL_CONTROLTYPE_CUSTOM控制之外,使用“0”值。
MIXERCONTROL.cMultipleItems成员:
当控制类型为MIXERCONTROL_CONTROLF_MULTIPLE时使用该值。
MIXERCONTROLDETAILS.hwndOwner成员:
当控制类型为MIXERCONTROL_CONTROLTYPE_CUSTOM,
并且mixerSetControlDetails函数定义了
MIXER_SETCONTROLDETAILSF_CUSTOM标志的时候使用该值。在这情况下, hwndOwner与cMultipleItems成员一致,提供窗口句柄的值。
* 当使用了MIXERCONTROL_CONTROLTYPE_CUSTOM控制,但没有使用MIXERCONTROL_CONTROLTYPE_CUSTOM标志,该成员定义为“0”。
对于MIXERCONTROL_CONTROLF_MULTIPLE的控制类型,应用程序不能定义与MIXERCONTROL.cMultipleItems成员不一样的值。
};
DWORD cbDetails;
指示出所使用的下列细节结构体之一的大小:
MIXERCONTROLDETAILS_BOOLEAN 音频线路控制的布尔值
MIXERCONTROLDETAILS_LISTTEXT 音频线路控制的list text buffer
MIXERCONTROLDETAILS_SIGNED 音频线路控制的有符号值
MIXERCONTROLDETAILS_UNSIGNED 音频线路控制的无符号值
当使用了MIXERCONTROL_CONTROLTYPE_CUSTOM控制,该成员必须等于MIXERCONTROL.cbCustomData成员。
LPVOID paDetails;
指向一个或多个结构组成的数组的指针,结构中存放着特定控制的属性,可以取得或设置。对于MIXERCONTROL_CONTROLF_MULTIPLE控制,buffer的大小应该是MIXERCONTROLDETAILS 结构体中的cChannels,cMultipleItems和cbDetails 成员的乘积。对于其他的控制类型,buffer的大小应该是MIXERCONTROLDETAILS 结构体中的cChannels和cbDetails 成员的乘积。
对于MIXERCONTROL_CONTROLF_MULTIPLE控制类型,数组可以看作一个以声道为主的二维数组,比如,左声道的所有MultipleItem和右声道的所有MultipleItem。
对于MIXERCONTROL_CONTROLF_MULTIPLE控制类型,每个元素的下标等同于它所影响的声道,即:paDetails[0] 左声道, paDetails[1] 右声道。
如果控制类型为MIXERCONTROL_CONTROLTYPE_CUSTOM,本成员必须指向一个足够容纳MIXERCONTROL结构体里的cbCustomData成员所定义的大小的buffer。
} MIXERCONTROLDETAILS;