Dotcpp  >  编程教程  >  MCI基础  >  MCI调整音量大小

MCI调整音量大小

点击打开在线编译器,边学边练

这一节我们学习如何调整音量的大小,调整音量大小分为三个步骤:

  1. 获取当前音量值

  2. 增加或减少音量

  3. 按照新的音量值重新设定音量


因此,按照这个三个步骤,我们分别来看,第一步获取音量需要用到命令status,完整的语句为:

char a[100];
mciSendString("status dotcpp.mp3 volume", a, 100, 0);

这句话意思是获取Fireflies.mp3音乐的当前音量,因为结果是字符串形式,所以回传给数组a

第二步,我们设置新的音量值,需要注意的是这里的音量范围虽然为0~1000,但这个只是一个分子值,也就是说我们传入的数值会除以1000得到百分比,然后乘以当前音量值,比如传900,就意味着设置成现有音量的90%大小

第三步,调用setaudio命令重置音量大小,如“setaudio dotcpp.mp3 volume to 900”的意思就是设置为当前音量的90%


以上三步,看起来简单,但由于音量值是一个字符串,故我们还要面临字符串和数字的来回转换,需要用到atoi和sprintf函数,我们可以参考如下代码:

#include <windows.h>
#pragma comment (lib,"winmm.lib")
int main()
{
	int num;
	char ch;
	char a[100];
	mciSendString("open dotcpp.mp3",NULL,0,NULL);
	mciSendString("play dotcpp.mp3",NULL,0,NULL);
	
	while(1)
	{
		mciSendString("status dotcpp.mp3 volume", a, 100, 0);
		num=atoi(a);
		printf("%d\n",num);
		ch=getch();
		if(ch=='w')
		{
			num=(num+100>=1000)?1000:num+100;
		}
		else if(ch=='s')
		{
			num=(num-100<=0)?0:num-100;
		}
		else
		{			
		}
		printf("num=%d\n",num);
		sprintf(a, "setaudio dotcpp.mp3 volume to %d", num);//把此时的音量以及操作字符串赋给a
		mciSendString(a, NULL, 0, NULL);//音量的设置
	}
	getchar();
	mciSendString("close dotcpp.mp3",NULL,0,NULL);
	return 0;
}

视觉效果如下:

MCI控制音量

大家可以自行阅读代码,代码中我们用了一个大循环,来接收w和s分别控制的增加音量和减少音量,每次幅度为100,由于考虑到音量0~1000的范围,我们用?:三目运算符进行了范围判断,为了便于学习,我们随时打印了当前音量值方便观察,大家可以自行上机尝试


本文固定URL:https://www.dotcpp.com/course/1212

Dotcpp在线编译      (登录可减少运行等待时间)