MFC 發出警報聲

轉自[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資源中。

  假定聲音資源的IDIDR_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);

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