想用vc++做一个mp3播放器.但是不知道如何着手,
本人正在学c++,还没有学过mfc,想问一下做这个需要哪些方面的
知识,思路是怎么样的,我现在手头有一份mp3播放器的原代码,但是看
不懂,郁闷啊!这个月底就要交了,急啊,大虾们帮小弟想想办法啊,先谢过了!

解决方案 »

  1.   

    如果想简单的话,就使用mp3的ActiveX控件,很少的编码量
    在文档区有现成的
    估计用"mp3"作关键字可以搜到
      

  2.   


    MCIERROR mciSendCommand(MCIDEVICEID wDeviceID, UINT uMsg,DWORD dwFlags, DWORD dwParam )
    或者
    MCIERROR mciSendString(LPCTSTR lpszCommand,LPTSTR lpszReturnString, UINT cchReturn, HANDLE hwndCallback)吧很好用的,你看看MSDN马上就能明白了。比较难得还有wave系列的函数。
    看看这个网址吧http://www.voiceangel.myetang.com/vcvoice.htm
      

  3.   

    单纯播放mp3的源代码。希望有所帮助!
    //-----------------------------------------------------------------------------
    // Purpose: Get The Play Item's Status
    //-----------------------------------------------------------------------------
    DWORD WINAPI getinfo(DWORD item,DWORD& m_count)
    {
    MCI_STATUS_PARMS mcistatusparms;
    mcistatusparms.dwCallback=NULL;//(DWORD)GetSafeHwnd();
    mcistatusparms.dwItem=item;
    mcistatusparms.dwReturn=0;
    mciSendCommand(m_count,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)&mcistatusparms);
    return mcistatusparms.dwReturn;
    }//-----------------------------------------------------------------------------
    // Purpose: Play Mp3 (Call It Via AfxBeginThread)
    // Input  : pParam - Mp3 FileName
    // Output : UINT
    //-----------------------------------------------------------------------------
    UINT PlayMp3(LPVOID pParam)
    {
    MCI_OPEN_PARMS mciopenparms;
    MCI_PLAY_PARMS mciplayparms;
    mciopenparms.lpstrElementName= *((CString*)pParam);
    mciopenparms.lpstrDeviceType=NULL;
    mciopenparms.dwCallback=NULL;
    MCIERROR e = mciSendCommand(0,MCI_OPEN,MCI_DEVTYPE_WAVEFORM_AUDIO,(DWORD)(LPVOID)&mciopenparms);//マCIノ雎クキ「ヒヘテ・隝鋧「
    DWORD m_count=mciopenparms.wDeviceID;
    mciplayparms.dwCallback= NULL;//(DWORD)GetSafeHwnd();
    DWORD cdlen=getinfo(MCI_STATUS_LENGTH,m_count);                                                                                                                                                                                                                                         
    DWORD cdto=MCI_MAKE_HMS(MCI_HMS_HOUR(cdlen),MCI_HMS_MINUTE(cdlen),MCI_HMS_SECOND(cdlen));  
    mciplayparms.dwFrom=0;
    mciplayparms.dwTo=cdto;
    e = mciSendCommand(mciopenparms.wDeviceID,MCI_PLAY,MCI_WAIT|MCI_TO|MCI_FROM,(DWORD)(LPVOID)& mciplayparms);
        
        DeleteFile(mciopenparms.lpstrElementName);

    SAFE_DELETE(pParam);
    return 0;
    }//-----------------------------------------------------------------------------
    // Purpose: Play Mp3 File
    // Input  : sFileName - Mp3 File Name
    // Output : void WINAPI
    //-----------------------------------------------------------------------------
    void WINAPI PlayMp3File(CString sFileName)
    {
    MCI_OPEN_PARMS mciopenparms;
    MCI_PLAY_PARMS mciplayparms;
    mciopenparms.lpstrElementName= sFileName;
    mciopenparms.lpstrDeviceType=NULL;
    mciopenparms.dwCallback=NULL;
    MCIERROR e = mciSendCommand(0,MCI_OPEN,MCI_DEVTYPE_WAVEFORM_AUDIO,(DWORD)(LPVOID)&mciopenparms);
    DWORD m_count=mciopenparms.wDeviceID;
    mciplayparms.dwCallback= NULL;//(DWORD)GetSafeHwnd();
    DWORD cdlen=getinfo(MCI_STATUS_LENGTH,m_count);                                                                                                                                                                                                                                         
    DWORD cdto=MCI_MAKE_HMS(MCI_HMS_HOUR(cdlen),MCI_HMS_MINUTE(cdlen),MCI_HMS_SECOND(cdlen));  
    mciplayparms.dwFrom=0;
    mciplayparms.dwTo=cdto;
    e = mciSendCommand(mciopenparms.wDeviceID,MCI_PLAY,MCI_TO|MCI_FROM,(DWORD)(LPVOID)& mciplayparms);     

    }