应项目需要,在网上搜集 MFC 中发声或播放音频函数如下:


一、 蜂鸣声


    BOOL WINAPI Beep(        
        DWORD dwFreq,    //频率  
        DWORD dwDuration //持续时间  
        );
    Beep(5000, 500);



二、播放系统的消息声音

            BOOL MessageBeep(UINT uType)

                    参数uType说明:

                    

                         -1         从机器的扬声器中发出蜂鸣声。

                        

                         MB_ICONASTERISK  播放由SystemAsterisk定义的声音。

                        

                         MB_ICONEXCLAMATION 播放由SystemExclamation定义的声音。

                        

                         MB_ICONHAND    播放由SystemHand定义的声音。

                        

                         MB_ICONQUESTION  播放由SystemQuestion定义的声音。

                        

                         MB_OK       播放由SystemDefault定义的声音

 

      MessageBeep(MB_OK);
      Sleep(3000);
      MessageBeep(MB_ICONWARNING);
      Sleep(3000);
      MessageBeep(MB_ICONSTOP);
      Sleep(3000);
      MessageBeep(MB_ICONERROR);
      Sleep(3000);
      MessageBeep(MB_ICONEXCLAMATION);
      Sleep(3000);



三、MCI 接口实现播放任意格式声音


    #include <mmsystem.h> //导入声音头文件库 
    #pragma comment(lib,"winmm.lib")//导入声音的链接库
   
    mciSendString("play C:/123.mp3 ", NULL, 0, 0); 
    mciSendString("play C:/123.wav ", NULL, 0, 0);



四、播放数字音频文件(*.WAV文件)


            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参数指定了预定义的声音标识符。

        

    #include <mmsystem.h> //导入声音头文件库 
    #pragma comment(lib,"winmm.lib")//导入声音的链接库
      
    // 同步播放,即播放结束后才返回函数
    PlaySound("D:/Downloads/Music/yohuyoha.wav", NULL, SND_SYNC);
    // 异步播放,即开始播放后,立即返回函数
    PlaySound("D:/Downloads/Music/chaoxian.wav", NULL, SND_ASYNC);