关于MCI控制的十万个为什么之一,希望渺茫还是期待高手现身
shu 2002-09-17 05:16:56 以下是我用到的打开、播放、定位程序:
open:
//Open the device
MCI_DGV_OPEN_PARMS OpenParms;
OpenParms.lpstrDeviceType="MPEGVideo2";
OpenParms.lpstrElementName=(LPSTR) Filename.GetBuffer(0);
OpenParms.wDeviceID=NULL;
OpenParms.hWndParent=pWnd->m_hWnd;
OpenParms.dwStyle=WS_CHILD|WS_VISIBLE;
if (mciSendCommand (NULL,MCI_OPEN, (DWORD)(MCI_OPEN_ELEMENT|MCI_DGV_OPEN_PARENT),(DWORD)(LPVOID)&OpenParms))
return FALSE;
m_wDeviceID=OpenParms.wDeviceID;
m_bOpned=TRUE;
//Set the format to frames
MCI_DGV_SET_PARMS SetParms;
SetParms.dwTimeFormat=MCI_FORMAT_MILLISECONDS;//FRAMES;
if (mciSendCommand (m_wDeviceID,MCI_SET,MCI_SET_TIME_FORMAT,(DWORD) (LPVOID)&SetParms))
{
close ();
return FALSE;
}
//Seek to the beginning of the JuneAVIVideo
mciSendCommand (m_wDeviceID,MCI_SEEK,MCI_SEEK_TO_START,NULL);
play:
PlayParms.dwCallback=(DWORD)hParent;//可以为空此时在任意窗口中播放
PlayParms.dwFrom=GetCurrentFrame();
DWORD dwFlags=MCI_FROM|MCI_MCIAVI_PLAY_WINDOW ;
if (mciSendCommand (m_wDeviceID,MCI_PLAY,dwFlags,(DWORD)(LPVOID)&PlayParms))
return FALSE;
Seek:
MCI_SEEK_PARMS SeekParms;
SeekParms.dwTo = nFrame;
if (mciSendCommand (m_wDeviceID,MCI_SEEK,MCI_TO | MCI_WAIT,(DWORD)(LPVOID) &SeekParms))
return FALSE;
问题是有的MPEG4 AVI能正常播放和SEEK,但个别的不能SEEK,SEEK后就不出声了!
请帮忙看看,到底怎么回事?