VC播放音频文件

本文介绍了一个使用VC++实现音频播放的类CPlayWave,通过MCI接口来打开、播放和停止音频文件。在项目设置中需要链接多媒体库winmm.lib,并提供了示例代码展示如何在窗口中调用播放功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、所使用的类,如下:

/
//播放音乐类
/
class CPlayWave
{
 protected:
  MCIDEVICEID m_DeviceID;
 public:
  MCIDEVICEID m_ElementID;
 public:
  CPlayWave()
  {
   m_DeviceID = 0;
   m_ElementID = 0;
   InitDevice();
  }
  ~CPlayWave()
  {
   if(m_ElementID)
    Stop();
   if(m_DeviceID)
    TerminalDevice();
  }
  DWORD InitDevice() //初始化设备
  {
   DWORD dwResult = 0;
   if (m_DeviceID == 0)
   {
    MCI_OPEN_PARMS mciInitParms;
    mciInitParms.lpstrDeviceType=(LPSTR)MCI_DEVTYPE_WAVEFORM_AUDIO;
    dwResult = mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_TYPE_ID|MCI_WAIT,        
           (DWORD)(LPVOID)&mciInitParms);
    m_DeviceID = mciInitParms.wDeviceID;
   }
   return dwResult;
  }
  DWORD TerminalDevice()
  {  
   DWORD dwResult = 0;  
   if (m_DeviceID)
   {
    dwResult = mciSendCommand(m_DeviceID,MCI_CLOSE,NULL,NULL);
   }
   m_DeviceID = 0;
   return dwResult;
  }
  DWORD Play(HWND hWnd,LPCSTR pFileName)
  {
   MCI_OPEN_PARMS mciOpenParms;
   memset(&mciOpenParms,0,sizeof(MCI_OPEN_PARMS));
   mciOpenParms.lpstrElementName=pFileName;
   DWORD dwResult = 0;
   dwResult = mciSendCommand(m_DeviceID,MCI_OPEN,MCI_OPEN_ELEMENT,
          (DWORD)(LPVOID)&mciOpenParms);
   if(!dwResult)
   {
    m_ElementID=mciOpenParms.wDeviceID;
    MCI_PLAY_PARMS mciPlayParms;
    mciPlayParms.dwCallback=(DWORD)hWnd;
    dwResult=mciSendCommand(m_ElementID,MCI_PLAY,
     MCI_NOTIFY,(DWORD)(LPVOID)&mciPlayParms);
   }
   return dwResult;
  }
  DWORD Stop()
  {
   DWORD dwResult=0;
   if(m_ElementID)
   {
    dwResult=mciSendCommand(m_ElementID,MCI_CLOSE,NULL,NULL);
    m_ElementID=0;
   }
   return dwResult; 
  }
};
///

2、在   Project   -Setting   中   Links   页里面的Object/libray   modules:   文本框中  
  加入winmm.lib   或   mmc.lib   或者什么其它的关于多媒体方面的一个库文件。

3、调用时:

 CPlayWave Wave;
   CString MediaName =(char*)(_bstr_t)m_pRecordset->GetCollect("音频");
   Wave.Stop();
   Wave.Play(m_hWnd,MediaName);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值