VC播放音頻文件

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);

 

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