一、播放时间的获取
OnSample( DWORD dwOutputNum,  QWORD cnsSampleTime, QWORD cnsSampleDuration,
                            DWORD dwFlags, INSSBuffer __RPC_FAR *pSample, void __RPC_FAR *pvContext )

说明:cnsSampleTime 当前已经播放的时间值。long  _lCurPos  = (long)(cnsSampleTime/10000);

QWORD qDuration = 0;
 IWMHeaderInfo * m_pReaderHeaderInfo->GetAttributeByName( &wVal, L"Duration", &wmtType, (LPBYTE)&qDuration, &cbLength );
 _lDuration = (long)(qDuration/10000);//时间。

计算得时间,显示形式为:(时:分:秒),若小时数为0,则显示(分:秒),用两位数表示
Data WMOpt::GetTime(void)
{

 char buff[1000];
 Data dtTime;
 long lMinute,lSecond;
 long lHour=0;
 long lTotalTime = getDuration()/1000;
 long lPlayTime = getCurPos()/1000;

 long lTime = lTotalTime - lPlayTime;//剩余时间。

 lSecond = lTime%60;
 lMinute = lTime/60;
 if(lMinute>60)
 {
  lHour = lMinute/60;
  lMinute = lMinute%60;
  
  if(lHour<10)
   sprintf( buff, "(0%d:",lHour);
  else
   sprintf( buff, "(%d:",lHour);
  dtTime = buff;
 }
 
 else
  dtTime = "(";

 if(lMinute<10)
  sprintf( buff, " 0%d:",lMinute);
 else
  sprintf( buff, " %d:",lMinute);

 dtTime +=buff;

 if(lSecond<10)
  sprintf( buff, " 0%d)",lSecond);
 else
  sprintf( buff, " %d)",lSecond);

 dtTime +=buff;
   
 return dtTime;// Data();
}

posted on 2006-05-15 10:04  泡泡  阅读(414)  评论(0编辑  收藏  举报