这一节我们学习如何调整音量的大小,调整音量大小分为三个步骤:
获取当前音量值
增加或减少音量
按照新的音量值重新设定音量
因此,按照这个三个步骤,我们分别来看,第一步获取音量需要用到命令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; }
视觉效果如下:
大家可以自行阅读代码,代码中我们用了一个大循环,来接收w和s分别控制的增加音量和减少音量,每次幅度为100,由于考虑到音量0~1000的范围,我们用?:三目运算符进行了范围判断,为了便于学习,我们随时打印了当前音量值方便观察,大家可以自行上机尝试
本文固定URL:https://www.dotcpp.com/course/1212
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程