函數介紹
爲了實現用C語言播放音樂,我們需要用到windows的一個API,mciSendString。
函數原型爲:
MCIERROR mciSendStringA(
LPCSTR lpstrCommand,
LPSTR lpstrReturnString,
UINT uReturnLength,
HWNDhwndCallback
);
1,返回值:MCIERROR即DWORD類型,而DWORD類型就是unsigned int,執行成功返回0,出錯返回非0值
2,lpstrCommand,指向以null結尾的命令字符串:”命令 設備[ 參數]”
3,lpstrReturnString,指向接收返回信息的緩衝區,爲NULL時不返回信息
4,uReturnLength,上述緩衝區的大小
5,hwndCallback,在命令串中含notify時,它指定一個回調窗口的句柄,一般爲NULL
使用方法
具體的播放代碼是這樣子滴:
mciSendString("stop a", NULL, 0, NULL); //停止播放音樂
mciSendString("close a", NULL, 0, NULL); //關閉音樂
open指令打開需要播放的音樂,alias後面制定了前面文件路徑的別名,以後想要操作這個文件直接使用這個別名就行了,後面的三個參數平時,就記着寫作NULL,0,NULL即可。
第二條語句play指令後面接上面定義的別名,repeat表示歌曲循環播放。如果想要在音樂播放時停止播放,有以下代碼
mciSendString("stop a",NULL,0,NULL); //停止播放音樂
mciSendString("close a",NULL,0,NULL); //關閉音樂
總而言之:play a開始播放,stop a停止播放,close a關閉文件,如果需要同時播放多個音樂的話應該爲每個音樂設置不同的別名,這樣就可以了
注意:還有一個函數PlaySound可以用來播放音樂,但是不支持mp3和wma
返回值錯誤檢查
有時候播放音樂會沒有聲音,這時候就需要對返回值進行檢查了,在返回錯誤碼的同時,還會有對應的錯誤信息,那麼怎麼查看信息呢?
這裏需要用到另外一個函數mciGetErrorString。
函數原型:
BOOL mciGetErrorStringA(
MCIERROR mcierr,
LPSTR pszText,
UINT cchText
);
1,返回值,沒有錯誤返回非零值,錯誤返回0
2,mcierr,mciSendString返回的錯誤代碼。
3,pszText,指向緩衝區的指針,該緩衝區接收錯誤描述,接受之後輸出即可看到信息。
4,cchText,pszText緩衝區的長度(以字符爲單位)
具體代碼如下:
char buf[100] = "";
char buf1[100] = "";
DWORD m1= mciSendString("open ThatGirl.mp3 alias a", NULL, 0, NULL);
int temp=mciGetErrorString(m1, buf, 100);
DWORD m2 = mciSendString("play a", NULL, 0, NULL);
mciGetErrorString(m2, buf, 100);
printf("m1-%u,m2-%u temp:%d\n",m1,m2,temp);
printf("%s\n%s\n", buf,buf1);
運行結果如下:
我這裏是能正常播放的,所以一切OK!
如果你想要獲取更多C語言、C++、Windows以及QT的知識!
小編有一個C/C++編程學習交流俱樂部,【點擊進入】!
還有編程學習文件,歡迎初學者和正在進階中的小夥伴們!