VC调节音量

//----------------------------设定音量---------------------------------------
bool GetVolumeControl(HMIXER hmixer ,long componentType,long ctrlType,MIXERCONTROL* mxc)
{
MIXERLINECONTROLS mxlc;
MIXERLINE mxl;
mxl.cbStruct = sizeof(mxl);
mxl.dwComponentType = componentType;
if(!mixerGetLineInfo((HMIXEROBJ)hmixer, &mxl, MIXER_GETLINEINFOF_COMPONENTTYPE))
{
mxlc.cbStruct = sizeof(mxlc);
mxlc.dwLineID = mxl.dwLineID;
mxlc.dwControlType = ctrlType;
mxlc.cControls = 1;
mxlc.cbmxctrl = sizeof(MIXERCONTROL);
mxlc.pamxctrl = mxc;
if(mixerGetLineControls((HMIXEROBJ)hmixer,&mxlc,MIXER_GETLINECONTROLSF_ONEBYTYPE))
return 0;
else
return 1;
}
return 0;
}
//---------------------------------------------------------------------------
long GetMuteValue(HMIXER hmixer ,MIXERCONTROL *mxc)
{
MIXERCONTROLDETAILS mxcd;
MIXERCONTROLDETAILS_BOOLEAN mxcdMute;
mxcd.hwndOwner = 0;
mxcd.cbStruct = sizeof(mxcd);
mxcd.dwControlID = mxc->dwControlID;
mxcd.cbDetails = sizeof(mxcdMute);
mxcd.paDetails = &mxcdMute;
mxcd.cChannels = 1;
mxcd.cMultipleItems = 0;
if (mixerGetControlDetails((HMIXEROBJ)hmixer, &mxcd,MIXER_OBJECTF_HMIXER|MIXER_GETCONTROLDETAILSF_VALUE))
return -1;
return mxcdMute.fValue;
}
//---------------------------------------------------------------------------
unsigned GetVolumeValue(HMIXER hmixer ,MIXERCONTROL *mxc)
{
MIXERCONTROLDETAILS mxcd;
MIXERCONTROLDETAILS_UNSIGNED vol; vol.dwValue=0;
mxcd.hwndOwner = 0;
mxcd.cbStruct = sizeof(mxcd);
mxcd.dwControlID = mxc->dwControlID;
mxcd.cbDetails = sizeof(vol);
mxcd.paDetails = &vol;
mxcd.cChannels = 1;
if(mixerGetControlDetails((HMIXEROBJ)hmixer, &mxcd, MIXER_OBJECTF_HMIXER|MIXER_GETCONTROLDETAILSF_VALUE))
return -1;
return vol.dwValue;
}
//---------------------------------------------------------------------------
bool SetMuteValue(HMIXER hmixer ,MIXERCONTROL *mxc, bool mute)
{
MIXERCONTROLDETAILS mxcd;
MIXERCONTROLDETAILS_BOOLEAN mxcdMute;mxcdMute.fValue=mute;
mxcd.hwndOwner = 0;
mxcd.dwControlID = mxc->dwControlID;
mxcd.cbStruct = sizeof(mxcd);
mxcd.cbDetails = sizeof(mxcdMute);
mxcd.paDetails = &mxcdMute;
mxcd.cChannels = 1;
mxcd.cMultipleItems = 0;
if (mixerSetControlDetails((HMIXEROBJ)hmixer, &mxcd, MIXER_OBJECTF_HMIXER|MIXER_SETCONTROLDETAILSF_VALUE))
return 0;
return 1;
}
//---------------------------------------------------------------------------
bool SetVolumeValue(HMIXER hmixer ,MIXERCONTROL *mxc, long volume)
{
MIXERCONTROLDETAILS mxcd;
MIXERCONTROLDETAILS_UNSIGNED vol;vol.dwValue = volume;
mxcd.hwndOwner = 0;
mxcd.dwControlID = mxc->dwControlID;
mxcd.cbStruct = sizeof(mxcd);
mxcd.cbDetails = sizeof(vol);
mxcd.paDetails = &vol;
mxcd.cChannels = 1;
if(mixerSetControlDetails((HMIXEROBJ)hmixer, &mxcd, MIXER_OBJECTF_HMIXER|MIXER_SETCONTROLDETAILSF_VALUE))
return 0;
return 1;
}

//---------------------------------------------------------------------------
unsigned WINAPI GetVolume(int dev)//得到设备的音量dev=0主音量,1WAVE ,2MIDI ,3 LINE IN
{
long device;unsigned rt=0;
MIXERCONTROL volCtrl;
HMIXER hmixer;
switch (dev)
{
case 1:
device=MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT; break;
case 2:
device=MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER; break;
case 3:
// device=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; break; // cd 音量
// device=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE; break; //麦克风音量
// device=MIXERLINE_COMPONENTTYPE_SRC_LINE; break; //PC 扬声器音量
device=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; break;
default:
device=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
}
if(mixerOpen(&hmixer, 0, 0, 0, 0)) return 0;
if(!GetVolumeControl(hmixer,device,MIXERCONTROL_CONTROLTYPE_VOLUME,&volCtrl))
return 0;
rt=GetVolumeValue(hmixer,&volCtrl)*100/volCtrl.Bounds.lMaximum;
mixerClose(hmixer);
return rt;
}
//---------------------------------------------------------------------------
bool WINAPI SetVolume(long dev,long vol)//设置设备的音量
{
// dev =0,1,2 分别表示主音量,波形,MIDI ,LINE IN
// vol=0-100 表示音量的大小 , 设置与返回音量的值用的是百分比,即音量从0 - 100,而不是设备的绝对值
// retrun false 表示设置音量的大小的操作不成功
// retrun true 表示设置音量的大小的操作成功
long device;
bool rc=false;
MIXERCONTROL volCtrl;
HMIXER hmixer;
switch (dev)
{
case 1:
device=MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT; break;
case 2:
device=MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER; break;
case 3:
device=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; break;
default:
device=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
}
if(mixerOpen(&hmixer, 0, 0, 0, 0)) return 0;
if(GetVolumeControl(hmixer,device,MIXERCONTROL_CONTROLTYPE_VOLUME,&volCtrl))
{
vol=vol*volCtrl.Bounds.lMaximum/100;
if(SetVolumeValue(hmixer,&volCtrl,vol))
rc=true;
}
mixerClose(hmixer);
return rc;
}
//---------------------------------------------------------------------------
bool WINAPI SetMute(long dev,long vol)//设置设备静音
{
// dev =0,1,2 分别表示主音量,波形,MIDI ,LINE IN
// vol=0,1 分别表示取消静音,设置静音
// retrun false 表示取消或设置静音操作不成功
// retrun true 表示取消或设置静音操作成功
long device;
bool rc=false;
MIXERCONTROL volCtrl;
HMIXER hmixer;
switch (dev)
{
case 1:
device=MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT; break;
case 2:
device=MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER; break;
case 3:
device=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; break;
default:
device=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
}
if(mixerOpen(&hmixer, 0, 0, 0, 0)) return 0;
if(GetVolumeControl(hmixer,device,MIXERCONTROL_CONTROLTYPE_MUTE,&volCtrl))
if(SetMuteValue(hmixer,&volCtrl,(bool)vol))
rc=true;
mixerClose(hmixer);
return rc;
}
//---------------------------------------------------------------------------
bool WINAPI GetMute(long dev)//检查设备是否静音
{
//dev =0,1,2 分别表示主音量,波形,MIDI ,LINE IN
// retrun false 表示没有静音
// retrun true 表示静音
long device;
bool rc=false;
MIXERCONTROL volCtrl;
HMIXER hmixer;
switch (dev)
{
case 1:
device=MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT; break;
case 2:
device=MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER; break;
case 3:
device=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; break;
default:
device=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
}
if(mixerOpen(&hmixer, 0, 0, 0, 0)) return 0;
if(GetVolumeControl(hmixer,device,MIXERCONTROL_CONTROLTYPE_MUTE,&volCtrl))
rc=GetMuteValue(hmixer,&volCtrl);
mixerClose(hmixer);
return rc;
}
使用:
//调节音量
void __fastcall TForm1::TrackBar0Change(TObject *Sender)
{
SetVolume(0,TrackBar0->Position*10);
}
//静音
void __fastcall TForm1::CheckBox0Click(TObject *Sender)
{
SetMute(0,CheckBox0->Checked);

时间: 2024-10-27 13:52:42

VC调节音量的相关文章

Win8如何用快捷键调节音量

1.音量快捷键一般笔记本才有,不同品牌电脑.同一品牌电脑不同的型号,按键都略有不同.较老或者普通的一般笔记本通常是按FN键,加带有喇叭标识的辅助键; 2.有的笔记本有专门的音量调节键,比如thinkpad的; 3.有的笔记本可以按小箭头调节音量; 4.不同的笔记本略有不同,自己根据实际情况查找; 5.通常要使用音量调节快捷键,需要安装相应的驱动,一般电脑出厂时安装此驱动,如果无法使用,则需要从电脑制造商的官网重新下载安装; 6.台式机的一般只能通过右下角的小喇叭设置,另外,可以通过第三方的软件来

xp系统调节音量时会发出“嘟嘟”声怎么办

  xp系统调节音量时会发出"嘟嘟"声怎么办 若已把声音方案设置为"无声",则在点击拉音杆时就可能会出现"嘟",点一下就"嘟"一下,这时,在"无声"方案下在"程序事件"里找到"默认响声"下拉,找一个声音比较小的选上,或者自己录一小段没有声音的音频,点击浏览选上,确定,这时再点拉音杆声音就是自己选定的了. 电脑常识 互联网 工具软件教程

win8调节音量快捷键在哪里?

  win8调节音量快捷键在哪里?           具体方法如下: 1.音量快捷键一般笔记本才有,不同品牌电脑.同一品牌电脑不同的型号,按键都略有不同.较老或者普通的一般笔记本通常是按FN键,加带有喇叭标识的辅助键; 2.有的笔记本有专门的音量调节键,比如thinkpad的; 3.有的笔记本可以按小箭头调节音量; 4.不同的笔记本略有不同,自己根据实际情况查找; 5.通常要使用音量调节快捷键,需要安装相应的驱动,一般电脑出厂时安装此驱动,如果无法使用,则需要从电脑制造商的官网重新下载安装;

调节音量的图标不见了

日常使用电脑时,经常会遇到音量图标不见了的小故障.一般是由于系统出错或是关机异常造成的.没有了音量图标系统就无法正常发出声音,令人郁闷.其实不必为此烦恼,下面的方法尝试着让大家重新找回有声世界. 一.找回不见的音量图标 如果在系统运行时突然音量图标不见了,可以通过下面的方法快速找回音量图标. 1.在开始.设置中,点开控制面板,打开这里面的小喇叭"声音和音频设备" 2." 将音量图标放入任务栏"的勾打上,点应用.确定;如果已经勾选,则先取消勾选,再重新勾选一遍. 音量

win7系统桌面右下角调节音量图标不见了怎么恢复?

  win7系统桌面右下角调节音量图标不见了恢复方法: 1.点击"开始"菜单在附件里面找到"运行"并打开它(也可以使用组合键:Win+R),然后再在运行框中键入"services.msc"并单击"确定"按钮 ; 2.在"服务"窗口中找到"windows audio"这项双击打开它; 3.在"常规"选项卡下将启动类型改为"自动",并在服务状态单击&q

ios-iOS版哔哩哔哩动画客户端的滑动调节音量的显示效果是怎么做的

问题描述 iOS版哔哩哔哩动画客户端的滑动调节音量的显示效果是怎么做的 我的APP调节音量时系统会自己弹出这个提示,但是调节亮度的时候不会有哔哩哔哩这个亮度的对话框弹出,请问这个显示亮度的对话框是怎么做的 解决方案 添加 手势事件 判断就行..

c#用trackbar控件调节音量,下面的代码是什么意思

问题描述 c#用trackbar控件调节音量,下面的代码是什么意思 专业回答 #region 音量 [DllImport("winmm.dll")] public static extern long waveOutSetVolume(UInt32 deviceID, UInt32 Volume); [DllImport("winmm.dll")] public static extern long waveOutGetVolume(UInt32 deviceID,

三星a7手机上如何调节音量 a7调节音量教程

三星a7手机是可以单独调节铃声.媒体.通知.系统的音量大小 下面小编就来为各位一个个演示一下吧: 1.如下图所示在手机中点击[应用程序],点击[设定]然后再打开进入,细节如下.      2.之后我们再找到下面的[我的设备],选择[声音]在此就可以开始设置音量了.       3.在此之后我们找到打开界面中的[音量]如下图所示.     4.现在就可以调节音量大小,最后点击[确定]如下图所示.     注意:除此之外还可以使用硬件按钮的音量键来进行调整的哦.

三星手机上如何调节音量

1.在待机界页下,点击[应用程序],点击[设定].    2.点击[我的设备],选择[声音].     3.点击[音量].     4.然后根据您的需要,调节音量大小,最后点击[确定]即可.     注意:利用您的设备左侧的音量按钮,也可在正常模式下调节铃音音量(或在通话期间调节耳机音量).   *此题以I9500为例,具体操作以您手机实际菜单为准.