<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    兩行C語言代碼播放音樂,so easy!

    發布時間:2020-5-20 10:21    發布者:嵌入式人生17
    兩行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!

    本文地址:http://www.portaltwn.com/thread-589334-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • 想要避免發生災難,就用MPLAB SiC電源仿真器!
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 我們是Microchip
    • 利用模擬開發工具生態系統進行安全電路設計
    • 貿澤電子(Mouser)專區
    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷