积累系统性知识
积聚技术精华
  首页    个人中心    撰写积文    建立课题    订立目标    整理积文    管理课题    管理目标    技能Get    代码积累 
播放mp3的3种方式
error997 (error997)    2014-11-20 20:21:07      目标    课题
   播放mp3的3种方式
1.使用Windows Media Player控件
首先插入Windows Media Player控件,把该控件拖到对话框上。并将该控件命名为m_wmpplayer。
切换到: 纯代码  
   
void CMusicDlg::OnButton1() 
{
    // TODO: Add your control notification handler code here
    CString  filename;
    CFileDialog dlg(TRUE);
    if(dlg.DoModal()==IDOK)
    {
        filename=dlg.GetPathName();
        m_wmpplayer.SetUrl(filename);
    }
}

   2.使用MCI
包含头文件#include <Vfw.h>,库文件vfw32.lib
切换到: 纯代码  
   
HWND m_Audio;
   m_Audio = MCIWndCreate(this->GetSafeHwnd(),AfxGetInstanceHandle(),WS_CHILD | WS_VISIBLE|MCIWNDF_NOMENU,NULL);
   void CMusicDlg::OnButton2() 
{
    // TODO: Add your control notification handler code here
    CString  filename;
    CFileDialog dlg(TRUE);
    if(dlg.DoModal()==IDOK)
    {
        filename=dlg.GetPathName();
        MCIWndOpen(m_Audio,filename.GetBuffer(0),0);
        filename.ReleaseBuffer();
   MCIWndPlay(m_Audio);
    }
}

   3.使用DirectShow
需要安装DirectX
包含头文件#include <DShow.h>,库文件strmiids.lib 
切换到: 纯代码  
   
    IGraphBuilder*   pGBuilder;   
    IMediaControl*   pMControl;   
    IMediaPosition*   pMPos;
   CoInitialize(NULL);   //初始化COM   
    //创建各个对象   
    CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC,IID_IGraphBuilder,(void **)&pGBuilder);   
    pGBuilder->QueryInterface(IID_IMediaControl,(void **)&pMControl);   
    pGBuilder->QueryInterface(IID_IMediaPosition,(void **)&pMPos);
   void CMusicDlg::OnButton3() 
{
    // TODO: Add your control notification handler code here
    CString  filename;
    CFileDialog dlg(TRUE);
    if(dlg.DoModal()==IDOK)
    {
        filename=dlg.GetPathName();
        WCHAR wstrSoundPath[MAX_PATH];//存储UNICODE形式的路径
        MultiByteToWideChar(CP_ACP,0,filename.GetBuffer(0),-1,wstrSoundPath,MAX_PATH);
        filename.ReleaseBuffer();
   pGBuilder->RenderFile(wstrSoundPath,NULL);//调入文件   
        //播放MP3文件
        pMPos->put_CurrentPosition(0);//移动到文件头   
        pMControl->Run();   //播放
    }
}
   
#define SAFE_RELEASE(p)            if( NULL != p ) { p->Release(); p = NULL;}
   BOOL CMusicDlg::DestroyWindow() 
{
 // TODO: Add your specialized code here and/or call the base class
    //释放对象
    SAFE_RELEASE(pMControl);   
    SAFE_RELEASE(pMPos);   
    SAFE_RELEASE(pGBuilder);   
    CoUninitialize();   //释放COM
    return CDialog::DestroyWindow();
}


转自 http://blog.csdn.net/y___y/article/details/1621050
(+0)技能Get

建议楼主:搜索关键字 |参考其他资源 |回复 |追问
  error997(error997):   个人中心    课题    目标    代码积累