轉自[http://blog.csdn.net/qihailong123456/article/details/6418418]
1、MessageBeep
MessageBeep函數主要用來播放系統報警聲音。系統報警聲音是由用戶在控制面板中的聲音(Sounds)程序中定義的,或者在WIN.INI的[sounds]段中指定。
該函數的聲明爲: BOOL MessageBeep(UINT uType);
參數uType說明了告警級:
-1 從機器的揚聲器中發出蜂鳴聲。
MB_ICONASTERISK 播放由SystemAsterisk定義的聲音。
MB_ICONEXCLAMATION 播放由SystemExclamation定義的聲音。
MB_ICONHAND 播放由SystemHand定義的聲音。
MB_ICONQUESTION 播放由SystemQuestion定義的聲音。
MB_OK 播放由SystemDefault定義的聲音。
要使用該函數,只須在程序中直接調用該函數即可。例如:
void CTttView::OnMyMenu()
{
......
MessageBeep(MB_OK);
......
);
2、sndPlaySound
MessageBeep只能用來播放少數定義的聲音,如果程序需要播放數字音頻文件(*.WAV文件),可以使用sndPlaySound函數。
函數的聲明爲:
BOOL sndPlaySound(LPCSTR lpszSound, UINT fuSound);
參數lpszSound是指定了要播放的WAV文件名,如果該參數爲NULL則停止正在播放的聲音。
參數fdwSound是播放標誌:
SND_SYNC 同步播放聲音,在播放完後PlaySound函數才返回。
SND_ASYNC 用異步方式播放聲音,PlaySound函數在開始播放後立即返回。
SND_LOOP 重複播放聲音,必須與SND_ASYNC標誌一塊使用。
要使用該函數,只須在程序中直接調用該函數即可。例如:
void CTttView::OnMyMenu()
{
......
sndPlaySound("MYSOUND.WAV",SND_ASYNC);
......
);
3、PlaySound
如果程序需要播放數字音頻文件(*.WAV文件)或音頻資源,可以使用PlaySound函數。
函數的聲明爲:
BOOL PlaySound(LPCSTR lpszSound, HMODULE hmod, UINT fuSound);
參數lpszSound是指定了要播放聲音的字符串,該參數可以是WAVE文件的名字,或是WAV資源的名字,或是內存中聲音數據的指針,或是在系統註冊表WIN.INI中定義的系統事件聲音。如果該參數爲NULL則停止正在播放的聲音。
參數hmod是應用程序的實例句柄,當播放WAV資源時要用到該參數,否則它必須爲NULL。
參數fdwSound是播放標誌的組合:
SND_SYNC 同步播放聲音,在播放完後PlaySound函數才返回。
SND_ASYNC 用異步方式播放聲音,PlaySound函數在開始播放後立即返回。
SND_LOOP 重複播放聲音,必須與SND_ASYNC標誌一塊使用。
SND_FILENAME lpszSound參數指定了WAVE文件名。
SND_RESOURCE lpszSound參數是WAVE資源的標識符,這時要用到hmod參數。
SND_MEMORY 播放載入到內存中的聲音,此時lpszSound是指向聲音數據的指針。
SND_ALIAS lpszSound參數指定了註冊表或WIN.INI中的系統事件的別名。
SND_ALIAS_ID lpszSound參數指定了預定義的聲音標識符。
(1)直接播出聲音文件。 可在程序中直接調用該函數:
PlaySound("c://windows//media//The Microsoft Sound.wav", NULL, SND_FILENAME | SND_ASYNC);
(2)可將聲音文件加入到資源中,然後從資源中播放聲音。
Visual C++支持WAVE型資源,用戶在資源視圖中單擊鼠標右鍵並選擇Import命令,然後在文件選擇對話框中選擇The Microsoft Sound.wav文件,則該文件就會被加入到WAVE資源中。
假定聲音資源的ID爲IDR_STARTWIN,則可:
PlaySound((LPCTSTR)IDR_STARTWIN, AfxGetInstanceHandle(), SND_RESOURCE | SND_ASYNC);
(2)可用PlaySound播放系統聲音。 Windows啓動的聲音是由SystemStart定義的系統聲音,因此可:
PlaySound("SystemStart",NULL,SND_ALIAS|SND_ASYNC);
eg:
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
PlaySound("C://Test.wav", NULL, 0);