MixerControlDetails structure definition
MixerControlDetailsTypedEf struct {dword cbstruct; indicates the size of the MixerControlDetails structure (byte), this size must be sufficient to include the basic MixerControlDetails structure. When MixergetControlDetails returns, the member includes the actual size of the return information. The return information does not exceed the size of the request, and cannot be less than the basic MixerControlDetails structure. DWORD DWCONTROLID; the control identifier that will be acquired or set. DWORD CCHANNELS; to control the number of channels, remove the column value: 0: When the control type is MixerControl_ControlTyPE_CUSTOM1: When the control type is MixerControl_Controlf_Uniform, MixerLine.cchannels: When the application is to close all channels, MixerLine.cchannels: When you need to control all lines When the channel is * the application cannot define the value in the range of (1, the number of audio cable channels), for example, for the four-channel line, defined as 2, 3 is illegal. This value cannot be 0 for non-customized (noncustom) control types. Union {hwnd hwndowner; window handle of the custom dialog of the mix control, the member is used to define the Mixer_setControlDetailsf_custom flag for the Mixer_setControlDetails function. DWORD CMULTIPLEITEMS; Each channel of the channel to be controlled, remove the column value: 0: In addition to MixerControl_Controlf_MultiPle and MixerControl_ControlType_Custom control, use the "0" value. MixerControl.cmultipleitems: Use this value when the control type is MixerControl_Controlf_MultiPle. MixerControlDetails.hwndowner: When the control type is MixerControl_ControlTyPE_CUSTOM, and the MixerSetControlDetails function defines the Mixer_SetControlDetailsf_custom flag. In this case, HWndowner consistent with the CMULTIPLEITEMS member, providing the value of the window handle. * When using MixerControl_ControlType_custom control, no MixerControl_ControlType_Custom flag is defined as "0". For the control type of MixerControl_Controlf_Multiple, the application cannot define a different value that is not the same as the MixerControl.cmultipleitems member. }
DWORD cbDetails; indicates the size of one of the following details of the structure used: Boolean MIXERCONTROLDETAILS_LISTTEXT audio line control list MIXERCONTROLDETAILS_BOOLEAN audio line control text buffer MIXERCONTROLDETAILS_SIGNED audio line control signed value MIXERCONTROLDETAILS_UNSIGNED audio line control unsigned values when using MixerControl_ControlType_custom control, the member must be equal to MixerControl.cbcustomData members. LPVOID PADETAILS; points to an array of one or more structures, a specific control attribute is placed in the structure, and can be obtained or set. For MixerControl_Controlf_Multiple control, the Buffer size should be the product of cchannels, cmultItems, and CBDetails members in MixerControlDetails structures. For other control types, the Buffer size should be the product of cchannels and CBDetails members in the MixerControlDetails structure. For MixerControl_Controlf_Multiple control types, arrays can be seen as a channel-based two-dimensional array, such as all Multipleitem and all Multipleitem of the left channel. For MixerControl_Controlf_Multiple control types, the subscript of each element is equivalent to the channel it affects, namely: padetails [0] left channel, Padetails [1] right channel. If the control type is MixerControl_ControlType_custom, this member must point to buffer, which is sufficient to accommodate the size of the CBCUSTOMDATA member in the MixerControl structure. MixerControlDetails;