C++播放声音

一、播放系统的消息声音

   BOOL WINAPI MessageBeep( __in  UINT uType);
   MSDN 中对这个函数的说明是:播放一个波形文件(也就是wav格式),每一个声音类型的波形声音在注册表中有一个条目(entry)指定.

 
 
  1. MessageBeep(MB_OK);  
  2. Sleep(3000);  
  3. MessageBeep(MB_ICONWARNING);  
  4. Sleep(3000);  
  5. MessageBeep(MB_ICONSTOP);  
  6. Sleep(3000);  
  7. MessageBeep(MB_ICONERROR);  
  8. Sleep(3000);  
  9. MessageBeep(MB_ICONEXCLAMATION);  
二、播放mav格式声音
    BOOL PlaySound(LPCTSTR pszSound,HMODULE hmod,DWORD fdwSound);
    具体的函数详情参照MSDN吧
    一个简单实例如下

  
  
  1. PlaySound("C:/love.wav",AfxGetInstanceHandle(), SND_FILENAME|SND_ASYNC );  
三、利用MCI 接口实现播放任意格式声音
 
 
  1. #include <mmsystem.h> //导入声音头文件库   
  2. #pragma comment(lib,"winmm.lib")//导入声音的链接库  
然后直接用mciSendString函数即可  
 
 
  1. mciSendString("open C:/123.mp3" , NULL, 0, 0);  
  2. mciSendString("play C:/123.mp3 ", NULL, 0, 0);   
上面两条 便可以播放 C盘下的123.mp3 了
具体的mci 编程,有待进一步的学习
四、利用强悍的MCIWndCreate()函数
 
 
  1. HWND m_hwndMCI;  
  2. if(m_hwndMCI!=NULL) //建立一个MCIWND 窗口  
  3. {  
  4.    MCIWndDestroy(m_hwndMCI);  
  5. }  
  6. int type=0; //隐藏默认工具栏0 表显示  
  7. CString filename="C:/123.mp3"//要播放的文件文件名  
  8. m_hwndMCI=MCIWndCreate(m_hWnd,AfxGetInstanceHandle(),type,filename);  
  9. MCIWndPlay(m_hwndMCI);  
五、利用Windows Media Player 控件
通过project--->add to project--->Components and Controls -->Registered ActiveX Controls--->Windows Media Player
Insert这个控件后,我们project中会自动添加17个类,这些都是Windows Media Player 控制相关的,同时我们的UI设计时的tools bar 中会多
出一个控件,那就 Windows Media Player ,拖到窗口上就能使用。
我们可以把这个控件关联成Control 类型的变量,这样,程序中就利用这个变量来设置WMPlayer。
如我们添加成变量名为:m_ctlWMPlayer,则利用,m_ctrWMPlayer.SetUrl("C:/123.mp3"),就可以播放我们c盘下的名为123.MP3的文件了

更深入的运用,有待更进一步的学习!


作者:JarvisChu 地址:http://www.cnblogs.com/JarvisChu

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 dhplay.dll 播放声音的流程大致如下: 1. 加载 dhplay.dll 库文件,并获取需要使用的函数地址。 ```c++ // 加载 dhplay.dll HINSTANCE hInst = LoadLibrary("dhplay.dll"); if (hInst == NULL) { // 加载失败,处理错误 return; } // 获取需要使用的函数地址 PLAY_OpenStream = (PLAY_OpenStreamFUN)GetProcAddress(hInst, "PLAY_OpenStream"); PLAY_Play = (PLAY_PlayFUN)GetProcAddress(hInst, "PLAY_Play"); PLAY_Stop = (PLAY_StopFUN)GetProcAddress(hInst, "PLAY_Stop"); PLAY_CloseStream = (PLAY_CloseStreamFUN)GetProcAddress(hInst, "PLAY_CloseStream"); ``` 2. 打开音频流并设置回调函数。 ```c++ // 打开音频流 DWORD nPort = 0; // 播放通道号,必须唯一 DWORD nBufSize = 1024 * 100; // 音频缓冲区大小 BOOL bBlocked = TRUE; // 是否阻塞模式 PLAY_OpenStream(nPort, NULL, 0, nBufSize); PLAY_SetStreamOpenMode(nPort, STREAME_REALTIME); // 设置回调函数 PLAY_SetAudioCallBack(nPort, AudioCallBack, NULL); ``` 3. 开始播放音频流。 ```c++ // 开始播放 PLAY_Play(nPort, NULL); ``` 4. 等待音频播放完成或手动停止播放。 ```c++ // 等待播放完成 while (bPlaying) { Sleep(100); } // 手动停止播放 PLAY_Stop(nPort); ``` 5. 关闭音频流并释放资源。 ```c++ // 关闭音频流 PLAY_CloseStream(nPort); // 释放库文件 FreeLibrary(hInst); ``` 其中,回调函数 AudioCallBack 的定义如下: ```c++ void CALLBACK AudioCallBack(LONG nPort, char *pBuf, LONG nSize, FRAME_INFO *pFrameInfo, LONG nReserved1, LONG nReserved2) { // 处理音频数据 // ... } ``` 需要注意的是,上述代码仅供参考,具体实现需要根据实际情况进行调整和优化。此外,使用 dhplay.dll 进行音频播放需要遵守相关的版权和使用条款。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值