這一節(jié)我們學習如何調(diào)整音量的大小,調(diào)整音量大小分為三個步驟:
獲取當前音量值
增加或減少音量
按照新的音量值重新設(shè)定音量
因此,按照這個三個步驟,我們分別來看,第一步獲取音量需要用到命令status,完整的語句為:
char a[100]; mciSendString("status dotcpp.mp3 volume", a, 100, 0);
這句話意思是獲取Fireflies.mp3音樂的當前音量,因為結(jié)果是字符串形式,所以回傳給數(shù)組a
第二步,我們設(shè)置新的音量值,需要注意的是這里的音量范圍雖然為0~1000,但這個只是一個分子值,也就是說我們傳入的數(shù)值會除以1000得到百分比,然后乘以當前音量值,比如傳900,就意味著設(shè)置成現(xiàn)有音量的90%大小
第三步,調(diào)用setaudio命令重置音量大小,如“setaudio dotcpp.mp3 volume to 900”的意思就是設(shè)置為當前音量的90%
以上三步,看起來簡單,但由于音量值是一個字符串,故我們還要面臨字符串和數(shù)字的來回轉(zhuǎn)換,需要用到atoi和sprintf函數(shù),我們可以參考如下代碼:
#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);//音量的設(shè)置 } getchar(); mciSendString("close dotcpp.mp3",NULL,0,NULL); return 0; }
視覺效果如下:
大家可以自行閱讀代碼,代碼中我們用了一個大循環(huán),來接收w和s分別控制的增加音量和減少音量,每次幅度為100,由于考慮到音量0~1000的范圍,我們用?:三目運算符進行了范圍判斷,為了便于學習,我們隨時打印了當前音量值方便觀察,大家可以自行上機嘗試
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程