我用MCI写简单的MP3,如何获取MP3文件的时间长度?

来源:百度知道 编辑:UC知道 时间:2024/06/06 12:13:44
见网上说用这种方法
MCI_STATUS_PARMS StatusParms;
StatusParms.dwItem = MCI_SEQ_STATUS_DIVTYPE;
mciSendCommand (m_wDeviceID, MCI_STATUS,
MCI_WAIT | MCI_STATUS_ITEM,
(DWORD)(LPVOID) &StatusParms);
返回信息存放于StatusParms.dwReturn中。
MCI_STATUS标志
MCI_STATUS_LENGTH 获得文件长度
MCI_STATUS_MODE 获得文件播放的当前状态
MCI_STATUS_POSITION 获得文件播放的当前位置
MCI_STATUS_TIME_FORMAT 获得当前的时间格式
MCI_SEQ_STATUS_DIVTYPE 判断文件是PPQN类型还是SMPTE类型
MCI_SEQ_STATUS_TEMPO 获得当前播放速度,PQRN类型,
但我设置MCI_STATUS_LENGTH后怎么StatusParms.dwReturn没有信息呢?
怎样才能正确获取呢?

CMp3Player为自定义类
HWND m_hVideo;为私有数据成员

long CMp3Player::GetLength()
{
if (m_hVideo !=NULL)
{
return MCIWndGetLength(m_hVideo);
}
return 0;
}

最好使用计数器一直获取文件长度,因为可能初始化的时候,获得长度为0,反正要一直获得当前位置的嘛....放一起就可以了.