int CVideoPlay::PlayOver()
{
long evCode,evParam1,evParam2;
HRESULT hr;
if(pimex)
{
while (SUCCEEDED(pimex->GetEvent(&evCode, &evParam1, &evParam2, 0)))
{ // Spin through the events
hr = pimex->FreeEventParams(evCode, evParam1, evParam2);
if (EC_COMPLETE == evCode)
{ // Finished
if (pivw)
{ // Relinquish ownership (IMPORTANT!) after hiding
pivw->put_Visible(OAFALSE);
pivw->put_Owner(NULL);
HELPER_RELEASE(pivw);
} // Relinquish ownership (IMPORTANT!) after hiding
// HELPER_RELEASE(pif);
HELPER_RELEASE(pigb);
HELPER_RELEASE(pimc);
HELPER_RELEASE(pmp);
HELPER_RELEASE(pimex);
return 0;
break;
}
}
}
return -1;
}
//继续播放
void CVideoPlay::ResumePlay()
{
HRESULT hr;
//得到当前播放位置
hr = pmp->get_CurrentPosition(&tCurrent);
if (SUCCEEDED(hr))
{
// 如果已在播放文件的最后(播放时间剩下不到1分钟),当前位置回到文件头
if ((tRemain=tLength - tCurrent) < 1)
pmp->put_CurrentPosition(0);
//不在文件尾,当前位置不变
else
pmp->put_CurrentPosition(tCurrent);
}
if(pimc)
pimc->Run(); //继续播放文件
}
//暂停播放
void CVideoPlay::PausePlay()
{
if(pimc)
pimc->Pause();
}
CVideoPlay::CVideoPlay()
{
pigb = NULL;
pimc = NULL;
pimex = NULL;
pivw = NULL;
pmp = NULL;
pVCap = NULL;
CappFg = NULL;
CapPigb = NULL;
}