制作VC++应用程序的多媒体封面(3)
WS_POPUT,
NULL); //创建MCIWnd窗口
if(m_hAVI=NULL)
return FALSE;
constCString filename="d:zhpexample.avi" //AVI文件名
if(filename.GetLength()>0)
{
MCIWndOpen(m_hAVI,(LPCSTR)filename,0); //打开设备文件
if(MCIWndUseTime(m_haAVI)!=0)
//设置MCI时间格式
return FALSE;
long PlayTime=MCIWndGetLength(m_hAVI);
//获得AVI文件的播放时间长度
MCIWndPlay(m_hAVI); //播放AVI影视文件
::Sleep(PlayTime); //进程休眠
MCIWndDestroy(m_hAVI); //关闭MCI窗口
}
//开始常规初始化
#ifdef_AFXDLL
Enable3dControls(); //Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); //Call this when linking to MFC statically
#endif
……
}
由于Windows系统是多任务、多进程并行的,因此要让InitialInstance进程休眠,等待M CIWndPlay进程播放AVI文件结束后才能继续执行InitialInstance进程,否则系统将在播放A VI影视的同时执行应用程序的初始化,不能达到动画封面效果。在以上代码中,阴影部分的程序段的功能就是获得AVI文件播放时间长度PlayTime,然后使用::Sleep()&&函数让进程休眠Pl ayTime毫秒后关闭MCIWnd窗口。