播放mp3的3种方式

播放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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值