⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 id3field.cpp

📁 更新mp3
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////////////// Copyright (c) 2000 John Adcock.  All rights reserved.///////////////////////////////////////////////////////////////////////////////// This library is free software; you can redistribute it and/or modify it// under the terms of the GNU Library General Public License as published by// the Free Software Foundation; either version 2 of the License, or (at your// option) any later version.//// This library is distributed in the hope that it will be useful, but WITHOUT// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public// License for more details.//// You should have received a copy of the GNU Library General Public License// along with this library; if not, write to the Free Software Foundation,// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.// The id3lib authors encourage improvements and optimisations to be sent to// the id3lib coordinator.  Please see the README file for details on where to// send such submissions.  See the AUTHORS file for a list of people who have// contributed to id3lib.  See the ChangeLog file for a list of changes to// id3lib.  These files are distributed with id3lib at// http://download.sourceforge.net/id3lib////////////////////////////////////////////////////////////////////////////////// ID3Field.cpp : Implementation of CID3Field/////////////////////////////////////////////////////////////////////////////// Change Log//// Date          Developer             Changes//// 05 Jan 2000   John Adcock           Original Release    // 26 Apr 2000   John Adcock           Got working with id3lib 3.7.3// 18 Aug 2000   Philip Oldaker        Added Picture Functionality///////////////////////////////////////////////////////////////////////////////#include "stdafx.h"#include "ID3COM.h"#include "ID3Field.h"#include "ID3Frame.h"/////////////////////////////////////////////////////////////////////////////// CID3FieldCID3Field::CID3Field(){	m_Field = NULL;	m_FrameParent = NULL;}CID3Field::~CID3Field(){	if(m_FrameParent != NULL)	{		m_FrameParent->Release();	}	m_Field = NULL;}IID3ComField* CID3Field::CreateObject(IID3ComFrame* FrameParent, ID3_Field* Field){	CComObject<CID3Field>* pRetVal = new CComObject<CID3Field>;	pRetVal->m_Field = Field;	pRetVal->m_FrameParent = FrameParent;	FrameParent->AddRef();	return (IID3ComField*)pRetVal;}STDMETHODIMP CID3Field::InterfaceSupportsErrorInfo(REFIID riid){	static const IID* arr[] = 	{		&IID_IID3ComField	};	for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)	{		if (InlineIsEqualGUID(*arr[i],riid))			return S_OK;	}	return S_FALSE;}STDMETHODIMP CID3Field::get_Text(long ItemNum, BSTR *pVal){    USES_CONVERSION;	luint TryChars = 0;	luint GotChars = 0;	try	{		*pVal = NULL;		size_t nText = m_Field->Size();        if(m_Field->GetEncoding() == ID3TE_UNICODE)        {		    unicode_t* sText = new unicode_t[nText + 1];		    try 		    {			    m_Field->Get(sText, nText, ItemNum - 1);			    sText[nText] = '\0';			    *pVal = SysAllocString(sText);		    }		    catch (...)		    {			    *pVal = NULL;		    }		    delete [] sText;        }        else        {		    char* sText = new char[nText + 1];		    try 		    {			    m_Field->Get(sText, nText, ItemNum - 1);			    sText[nText] = '\0';			    *pVal = SysAllocString(A2W(sText));		    }		    catch (...)		    {			    *pVal = NULL;		    }		    delete [] sText;        }		return S_OK;	}	catch (...)	{		return Error(IDS_UNEXPECTED_ERROR, IID_IID3ComField, E_UNEXPECTED);	}}STDMETHODIMP CID3Field::put_Text(long ItemNum, BSTR newVal){	try	{		m_Field->Set(newVal);		return S_OK;	}	catch (...)	{		return Error(IDS_UNEXPECTED_ERROR, IID_IID3ComField, E_UNEXPECTED);	}}STDMETHODIMP CID3Field::get_Long(long *pVal){	try	{		*pVal = m_Field->Get();		return S_OK;	}	catch (...)	{		return Error(IDS_UNEXPECTED_ERROR, IID_IID3ComField, E_UNEXPECTED);	}}STDMETHODIMP CID3Field::put_Long(long newVal){	try	{		m_Field->Set(newVal);		return S_OK;	}	catch (...)	{		return Error(IDS_UNEXPECTED_ERROR, IID_IID3ComField, E_UNEXPECTED);	}}STDMETHODIMP CID3Field::Clear(){	try	{		m_Field->Clear();		return S_OK;	}	catch (...)	{		return Error(IDS_UNEXPECTED_ERROR, IID_IID3ComField, E_UNEXPECTED);	}}STDMETHODIMP CID3Field::CopyDataToFile(BSTR FileName){	USES_CONVERSION;	try	{		m_Field->ToFile(OLE2A(FileName));		return S_OK;	}	catch (...)	{		return Error(IDS_UNEXPECTED_ERROR, IID_IID3ComField, E_UNEXPECTED);	}}STDMETHODIMP CID3Field::CopyDataFromFile(BSTR FileName){	USES_CONVERSION;	try	{		m_Field->FromFile(OLE2A(FileName));		return S_OK;	}	catch (...)	{		return Error(IDS_UNEXPECTED_ERROR, IID_IID3ComField, E_UNEXPECTED);	}}STDMETHODIMP CID3Field::get_NumTextItems(long *pVal){	try	{		*pVal = m_Field->GetNumTextItems();		return S_OK;	}	catch (...)	{		return Error(IDS_UNEXPECTED_ERROR, IID_IID3ComField, E_UNEXPECTED);	}}STDMETHODIMP CID3Field::get_Binary(BSTR *pVal){	// TODO: Add your implementation code here	if (pVal == NULL)		return E_POINTER;	try	{		*pVal = NULL;		const uchar *pData = m_Field->GetRawBinary();		if (pData == NULL)			return E_FAIL;		ID3_Frame *pFrame = ((CID3Frame*)m_FrameParent)->GetID3Frame();				if (pFrame->GetID() == ID3FID_PICTURE)		{			*pVal = _bstr_t((LPCTSTR)pData).copy();					}		else		{			*pVal = SysAllocStringByteLen((const char *)pData,m_Field->Size());		}	}	catch (...)	{		return Error(IDS_UNEXPECTED_ERROR, IID_IID3ComField, E_UNEXPECTED);	}	return S_OK;}STDMETHODIMP CID3Field::put_Binary(BSTR newVal){	// TODO: Add your implementation code here	try	{		size_t Size = SysStringByteLen(newVal);		m_Field->Set((const uchar *)newVal,Size);	}	catch (...)	{		return Error(IDS_UNEXPECTED_ERROR, IID_IID3ComField, E_UNEXPECTED);	}	return S_OK;}///////////////////////////////////////////////////////// End Added Philip Oldaker 12-Aug 2000///////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -