查看完整版本: 用MCI撥放音樂
頁: [1]

midquit 發表於 2011-7-20 02:50 AM

用MCI撥放音樂

本帖最後由 midquit 於 2011-7-22 05:42 PM 編輯

#include<windows.h>
#include<stdio.h>
#include<mmsystem.h>

#pragma comment(lib,"winmm.lib")

int main()
{
mciSendStringA("play alert.wav","",NULL,NULL);
}

以上是我的程式碼
我用的是C++2008
我把音樂檔案跟.exe檔放在同一個位置
但執行程式以後都沒有聲音

請問該怎麼撥放音樂?
有其他方法嗎?
拜託各位大大幫幫忙ˊˋ<div></div>

goodbye_mylove 發表於 2011-7-22 02:39 AM



/*
* filename : PlaySound.c
* author   : eyny @ goodbye_myloves
* compiler : Visual C++ 2008
*
*/

#pragma comment(lib, "Winmm.lib")
#include <stdio.h>
#include <windows.h>
#define PLAY_TIME 30000 /* Play 5 mins */
int main()
{
        int n;
        puts("1 : Play Loop");
        puts("2 : Play Once");
        scanf("%d", &n);
        if(n==1) PlaySound("test.wav", NULL, SND_FILENAME|SND_NOSTOP);
        else PlaySound("", NULL, NULL, SND_FILENAME|SND_ASYNC ),  Sleep(PLAY_TIME);
        return 0;
}
其它的自己去研究吧.....<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

midquit 發表於 2011-7-22 07:35 PM

研究了頗久終於懂了
不過板大code第19行的PlaySound()裡面多一個參數了
而且實際跑了一遍發現如果輸入1雖然有SND_NOSTOP在
但是他還是只會撥放一次音樂
我試了SND_LOOP結果也是一樣
另外PlaySound有辦法同時撥放背景音樂和音效嗎?
新的音樂播放好像會把舊的音樂蓋掉...

goodbye_mylove 發表於 2011-7-22 09:28 PM

回復 3# midquit


所以我才跟你說,「其它的自己研究」。
發此文只是要點出「PlaySound」可以達成你的需求,
但 PlaySound 可用參數真的很多,
若給了這種 sample ,去 MSDN 查說明還看不懂的話,
我認為才有「再次提問」的必要。

--------

I give the sample answer,
where is your trying ?
Had you ever try to search ?...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

iwtky 發表於 2011-7-26 05:10 PM

岔題問一下...
我在Wikipedia看到有關於MCI,裡面有一句話:
For a number of years the MCI interface has been phased out in favor of the DirectX APIs first released in 1995.

這是不是意味著,如果是開發新的挰式,用DirectX會比較好呢?<br><br><br><br><br><div></div>

goodbye_mylove 發表於 2011-7-27 01:33 PM

MCI function 至今乃有人在用,
唯 MSDN 對 MCI function 似乎沒丟出範例做參考,這部份實為可惜部份。
我沒深入討論過 MCI function 優裂,但如果提到 DirectX 取代 MCI function,
我下一個問題是:為什麼不是 OpenGL ? (除非那篇文章為 M$ 所撰則合理)
OpenGL 和  DirectX 一直都有各位愛好擁護者,
即使 MCI function 有問題,直接點出以 DirectX 替代,唯恐發起一陣筆戰。
-------

kaworucloud 發表於 2011-7-27 03:47 PM

我下一個問題是:為什麼不是 OpenGL ?
goodbye_mylove 發表於 2011-7-27 01:33 PM http://www02.eyny.com/images/common/back.gif

因為 OpenGL is just a graphics API,不像 DirectX 集合 graphics, sound, music, input, networking, multimedia 等大部分遊戲會用到的項目於一身

不少人以為 OpenGL 與 DirectX 是對等的存在,這是錯的
OpenGL 不管繪圖之外的事,要處理音訊、網路或 IO 請搭配其他 API...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

goodbye_mylove 發表於 2011-7-27 04:10 PM

回復 7# kaworucloud


謝謝指正與解答 *^_^*

koei2580 發表於 2011-9-6 08:39 PM

嘿嘿 *^_^* 學到了 !沒想到你門這些高手這麼厲害 , 不然我真以為 OpenGL 與 DirectX 是對等的存在 , 謝謝各位教導正確觀念 , 受益匪淺
頁: [1]