C++ Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
|
获取MP3文件信息
注释: 函数名称:Open 函数介绍:只读/读写、共享打开MP3文件, 为读取MP3文件信息做准备. 要求打开MCI时用MCI_OPEN_SHAREABLE. 输入参数:LPSTR strPath, MP3文件路径 BOOL bRead, true =读, false =写 输出参数:无 返回值 :BOOL, true =成功, false =失败 BOOL CID3TAG::Open(LPSTR strPath, BOOL bRead) { TRY{ if (bRead) m_f.Open(strPath, CFile::typeBinary | CFile::modeRead | CFile::shareDenyNone); else m_f.Open(strPath, CFile::typeBinary | CFile::modeReadWrite | CFile::shareDenyWrite); }CATCH( CFileException, e ) { return false ; } END_CATCH if (m_f.m_hFile == (UINT)CFile::hFileNull) return false ; return true ; } //==================== 函数名称:GetData 函数介绍:读取ID3信息, 并存储到数据成员 ID3信息:(MP3文件的后128字节) "TAG" (标志): 3 Title(标题): 30 Artist(艺术家): 30 Album(纪念册): 30 Year(年份): 4 Comment(注释): 30 Genre(流派): 1 输入参数:无 输出参数:无 返回值 :BOOL, true =成功, false =失败 BOOL CID3TAG::GetData() { TRY{ CString str=_T( "" ); m_f.Seek(- 128 , CFile::end); m_f.Read(str.GetBuffer( 3 ), 3 ); str.ReleaseBuffer(); if (str==_T( "TAG" )) //标志为"TAG" { m_f.Read(m_Title.GetBuffer( 30 ), 30 ); m_Title.ReleaseBuffer(); m_f.Read(m_Artist.GetBuffer( 30 ), 30 ); m_Artist.ReleaseBuffer(); m_f.Read(m_Album.GetBuffer( 30 ), 30 ); m_Album.ReleaseBuffer(); m_f.Read(m_Year.GetBuffer( 4 ), 4 ); m_Year.ReleaseBuffer(); m_f.Read(m_Comment.GetBuffer( 30 ), 30 ); m_Comment.ReleaseBuffer(); m_f.Read(m_Genre.GetBuffer( 1 ), 1 ); m_Genre.ReleaseBuffer(); } else return false ; }CATCH( CFileException, e ) { return false ; } END_CATCH return true ; } 函数名称:Close 函数介绍:关闭已打开的MP3文件 输入参数:无 输出参数:无 返回值 :BOOL, true =成功, false =失败 //===================== BOOL CID3TAG::Close() { if (m_f.m_hFile!=(UINT)CFile::hFileNull) m_f.Close(); return true ; } |