兩行C語言代碼播放音樂,就這麼so easy!你學到了嗎?

函數介紹

爲了實現用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++編程學習交流俱樂部,【點擊進入】

還有編程學習文件,歡迎初學者和正在進階中的小夥伴們!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章