当我运行此代码时:
MIXERLINE MixerLine;
memset( &MixerLine, 0, sizeof(MIXERLINE) );
MixerLine.cbStruct = sizeof(MIXERLINE);
MixerLine.dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT;
mmResult = mixerGetLineInfo( (HMIXEROBJ)m_dwMixerHandle, &MixerLine, MIXER_GETLINEINFOF_COMPONENTTYPE );
在 XP MixerLine.cChannels 下返回声卡支持的通道数。经常2,这些天经常更多。
在 Vista 下,MixerLine.cChannels 作为一个返回。
然后我得到了一个 MIXERCONTROL_CONTROLTYPE_VOLUME 控件并为每个受支持的通道设置音量,并将不同通道上的音量控制设置为不同的级别,以便在扬声器之间来回平移音乐(从左到右)。
显然在 Vista 下这种方法是行不通的,因为只有一个通道。我可以设置音量,它同时适用于两个通道。
我试图为这个设备获取一个 MIXERCONTROL_CONTROLTYPE_PAN,但这不是一个有效的控件。
所以,所有MMSystem专家的问题是:我需要什么类型的控制来调整左/右平衡?或者,有没有更好的方法?我想要一个适用于 XP 和 Vista 的解决方案。
计算机详细信息:运行 Vista Ultimta 32 位 SP1 和所有最新补丁。音频由带有 4 个扬声器的 Creative Audigy 2 ZS 卡提供,这些扬声器都可以通过 Vista 的声音面板正确寻址(控制)。驱动程序是 Creative 网站上的最新版本 (SBAX_PCDRV_LB_2_18_0001)。Vista 声音未设置为单声道,所有声道都可以从声音面板中看到和控制。
在“XP 兼容模式”下运行程序不会改变此问题的行为。