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

📄 id3tag.cpp

📁 更新mp3
💻 CPP
📖 第 1 页 / 共 2 页
字号:
}STDMETHODIMP CID3Tag::put_Year(BSTR newVal){	USES_CONVERSION;	try	{		ID3_AddYear(m_ID3Tag, OLE2A(newVal), true);	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}	return S_OK;}STDMETHODIMP CID3Tag::get_Track(long *pVal){	try	{		*pVal = -1;		*pVal = ID3_GetTrackNum(m_ID3Tag);		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::put_Track(long newVal){	try	{		ID3_AddTrack(m_ID3Tag, (uchar)newVal, 0, true);		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::get_LastPlayed(DATE *pVal){	try	{		*pVal = 0;		ID3_Frame *pFrame = m_ID3Tag->Find(ID3FID_USERTEXT, ID3FN_DESCRIPTION, "LastPlayed");		if (pFrame != NULL)		{			char* szLastPlayed = ID3_GetString(pFrame, ID3FN_TEXT);			if(szLastPlayed != NULL)			{				*pVal = atof(szLastPlayed);				delete [] szLastPlayed;			}		}		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::put_LastPlayed(DATE newVal){	try	{		ID3_Frame *pFrame = m_ID3Tag->Find(ID3FID_USERTEXT, ID3FN_DESCRIPTION, "LastPlayed");		if(pFrame == NULL)		{			pFrame = new ID3_Frame(ID3FID_USERTEXT);			pFrame->Field(ID3FN_DESCRIPTION) = "LastPlayed";			pFrame->Field(ID3FN_TEXTENC) = ID3TE_ASCII;			m_ID3Tag->AttachFrame(pFrame);		}		char Buffer[40];		sprintf(Buffer, "%6.7f", newVal);		pFrame->Field(ID3FN_TEXT) = Buffer;		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::get_HasV1Tag(VARIANT_BOOL *pVal){	try	{		*pVal = VARIANT_FALSE;		if (m_ID3Tag->HasTagType(ID3TT_ID3V1))		{			*pVal = VARIANT_TRUE;		}			else		{			*pVal = VARIANT_FALSE;		}		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::get_HasV2Tag(VARIANT_BOOL *pVal){	try	{		*pVal = VARIANT_FALSE;		if (m_ID3Tag->HasTagType(ID3TT_ID3V2))		{			*pVal = VARIANT_TRUE;		}			else		{			*pVal = VARIANT_FALSE;		}		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::get_HasLyrics(VARIANT_BOOL *pVal){	try	{		if (m_ID3Tag->HasTagType(ID3TT_LYRICS))		{			*pVal = VARIANT_TRUE;		}			else		{			*pVal = VARIANT_FALSE;		}		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::FindFrameString(eID3FrameTypes FrameID, eID3FieldTypes FieldType, BSTR FindString, VARIANT_BOOL CreateNewIfNotFound, IID3ComFrame** pVal){	try	{		*pVal = NULL;		ID3_Frame* pFrame = m_ID3Tag->Find((enum ID3_FrameID)FrameID, (enum ID3_FieldID)FieldType, FindString);		if(CreateNewIfNotFound == VARIANT_TRUE && pFrame == NULL)		{			pFrame = new ID3_Frame((enum ID3_FrameID)FrameID);			pFrame->Field((enum ID3_FieldID)FieldType) = FindString;                        m_ID3Tag->AttachFrame(pFrame);		}		if(pFrame != NULL)		{			*pVal = CID3Frame::CreateObject(this, pFrame);			(*pVal)->AddRef();		}		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::get_PlayCount(BSTR EMailAddress, long *pVal){	try	{		*pVal = 0;		ID3_Frame *pFrame = m_ID3Tag->Find(ID3FID_POPULARIMETER, ID3FN_EMAIL, EMailAddress);		if (pFrame != NULL)		{			*pVal = pFrame->Field(ID3FN_COUNTER).Get();		}		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::put_PlayCount(BSTR EMailAddress, long newVal){	try	{		ID3_Frame *pFrame = m_ID3Tag->Find(ID3FID_POPULARIMETER, ID3FN_EMAIL, EMailAddress);		if(pFrame == NULL)		{			pFrame = new ID3_Frame(ID3FID_POPULARIMETER);			pFrame->Field(ID3FN_EMAIL) = EMailAddress;			m_ID3Tag->AttachFrame(pFrame);		}		pFrame->Field(ID3FN_COUNTER) = newVal;		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::get_Popularity(BSTR EMailAddress, short *pVal){	try	{		*pVal = 0;		ID3_Frame *pFrame = m_ID3Tag->Find(ID3FID_POPULARIMETER, ID3FN_EMAIL, EMailAddress);		if (pFrame != NULL)		{			*pVal = (short)pFrame->Field(ID3FN_RATING).Get();		}		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::put_Popularity(BSTR EMailAddress, short newVal){	try	{		ID3_Frame *pFrame = m_ID3Tag->Find(ID3FID_POPULARIMETER, ID3FN_EMAIL, EMailAddress);		if(pFrame == NULL)		{			pFrame = new ID3_Frame(ID3FID_POPULARIMETER);			pFrame->Field(ID3FN_EMAIL) = EMailAddress;			m_ID3Tag->AttachFrame(pFrame);		}		pFrame->Field(ID3FN_RATING) = newVal;		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::get_TagCreated(DATE *pVal){	try	{		*pVal = 0;		ID3_Frame *pFrame = m_ID3Tag->Find(ID3FID_USERTEXT, ID3FN_DESCRIPTION, "TagCreated");		if (pFrame != NULL)		{			char* szTagCreated = ID3_GetString(pFrame, ID3FN_TEXT);			if(szTagCreated != NULL)			{				*pVal = atof(szTagCreated);				delete [] szTagCreated;			}		}		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::put_TagCreated(DATE newVal){	try	{		ID3_Frame *pFrame = m_ID3Tag->Find(ID3FID_USERTEXT, ID3FN_DESCRIPTION, "TagCreated");		if(pFrame == NULL)		{			pFrame = new ID3_Frame(ID3FID_USERTEXT);			pFrame->Field(ID3FN_DESCRIPTION) = "TagCreated";			pFrame->Field(ID3FN_TEXTENC) = ID3TE_ASCII;			m_ID3Tag->AttachFrame(pFrame);		}		char Buffer[40];		sprintf(Buffer, "%6.7f", newVal);		pFrame->Field(ID3FN_TEXT) = Buffer;		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::get_PercentVolumeAdjust(double *pVal){	try	{		*pVal = 100;		ID3_Frame *pFrame = m_ID3Tag->Find(ID3FID_USERTEXT, ID3FN_DESCRIPTION, "PercentVolAdj");		if (pFrame != NULL)		{			char* szVolAdjust = ID3_GetString(pFrame, ID3FN_TEXT);			if(szVolAdjust != NULL)			{				*pVal = atof(szVolAdjust);				delete [] szVolAdjust;			}		}		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::put_PercentVolumeAdjust(double newVal){	try	{		ID3_Frame *pFrame = m_ID3Tag->Find(ID3FID_USERTEXT, ID3FN_DESCRIPTION, "PercentVolAdj");		if(pFrame == NULL)		{			pFrame = new ID3_Frame(ID3FID_USERTEXT);			pFrame->Field(ID3FN_DESCRIPTION) = "PercentVolAdj";			pFrame->Field(ID3FN_TEXTENC) = ID3TE_ASCII;			m_ID3Tag->AttachFrame(pFrame);		}		char Buffer[40];		sprintf(Buffer, "%6.7f", newVal);		pFrame->Field(ID3FN_TEXT) = Buffer;		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::put_Padding(VARIANT_BOOL newVal){	try	{		m_ID3Tag->SetPadding(newVal == VARIANT_TRUE);		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::put_UnSync(VARIANT_BOOL newVal){	try	{		m_ID3Tag->SetUnsync(newVal == VARIANT_TRUE);		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::get_VersionString(BSTR *pVal){	USES_CONVERSION;	try	{		// this buffer needs to be overly large		// for some unexplained reason		// if the size is small you get what?		char Buffer[1024];		sprintf(Buffer, "id3com %d.%d.%d Compiled %s %s", _ID3LIB_MAJOR_VERSION,														_ID3LIB_MINOR_VERSION,														_ID3LIB_PATCH_VERSION,														__DATE__,														__TIME__);		*pVal = SysAllocString(A2W(Buffer));		return S_OK;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}}STDMETHODIMP CID3Tag::RemoveFrame(eID3FrameTypes FrameID){	// TODO: Add your implementation code here	HRESULT hr=S_OK;	try	{		ID3_Frame* pFrame = m_ID3Tag->Find((enum ID3_FrameID)FrameID);		if (pFrame)		{			/* pTag is an ID3_Tag */			delete m_ID3Tag->RemoveFrame(pFrame);		}		else			hr = E_POINTER;	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}	return hr;}STDMETHODIMP CID3Tag::RemoveFrameByNum(long FrameNum){	HRESULT hr=S_OK;	try	{        ID3_Frame* pFrame = NULL;        ID3_Tag::Iterator* it = m_ID3Tag->CreateIterator();        pFrame = it->GetNext();        while(FrameNum)        {            pFrame = it->GetNext();            --FrameNum;        }        delete it;		if(pFrame)		{			/* pTag is an ID3_Tag */			delete m_ID3Tag->RemoveFrame(pFrame);					}		else        {			hr = E_POINTER;        }	}	catch (...)	{		return AtlReportError(CLSID_ID3ComTag, "An unexpected error has occurred", IID_IID3ComTag, E_UNEXPECTED);	}	return hr;}///////////////////////////////////////////////////////// End Added Philip Oldaker 12-Aug 2000///////////////////////////////////////////////////////

⌨️ 快捷键说明

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