兩行C語言代碼播放音樂,so easy! 函數介紹 為了實現用C語言播放音樂,我們需要用到windows的一個API,mciSendString。 函數原型為: · · · · · · MCIERROR mciSendStringA( LPCSTR lpstrCommand, LPSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback); 1,返回值:MCIERROR即DWORD類型,而DWORD類型就是unsigned int,執行成功返回0,出錯返回非0值 2,lpstrCommand,指向以null結尾的命令字符串:”命令 設備[ 參數]” 3,lpstrReturnString,指向接收返回信息的緩沖區,為NULL時不返回信息 4,uReturnLength,上述緩沖區的大小 5,hwndCallback,在命令串中含notify時,它指定一個回調窗口的句柄,一般為NULL 使用方法 具體的播放代碼是這樣子滴: · · mciSendString("open ThatGirl.mp3 alias a", NULL, 0, NULL);//打開音樂mciSendString("play 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); 運行結果如下: file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml11356\wps2.jpg 我這里是能正常播放的,所以一切OK! |