出应用
InitializeQT和Terminate分别为初始化QuickTime媒体层和退出QuickTime媒体层。它们可以在
程序的开始和结束。我们在CQTVideoWnd的构造函数和析构函数中调用它们。
BOOL CQuickTime::InitializeQT(IQTEventSink* pQTEventSink /*= NULL*/)
{
……
OSErr Err = noErr;
// Initialize QuickTime Media Layer
Err = InitializeQTML(0);
// Initialize QuickTime
if(Err == noErr)
{
Err = EnterMovies();
}
else
{
Err = QT_NOPLAYER;
}
if(Err == noErr)
{
//Because we can not distinguish the error from which object
//So we marked SetMoviesErrorProc
// SetMoviesErrorProc(MoviesErrorProc,(long)this);
}
else
Err = QT_INITIAL_ERR;
……
return Err == noErr ? TRUE : FALSE;
}
如果要得到QuickTime的错误代码,我们可以在初始化完后调用SetMoviesErrorProc函数,但是假如一个应用中有多个QuickTime的电影对象。我们将不能区分错误来自哪个对象。
void CQuickTime::Terminate()
{
// Clean up
ExitMovies();
TerminateQTML();
DebugInfo("CQuickTime::Terminate this = %p,m_pQTEventSink = %p",this,m_pQTEventSink);
}
3.2.2得到电影的句柄
如果是本地文件调用OpenLocalMovie,得到句柄后保存在成员变量里m_Movie。该函数打开电影后创建Movie Controller。Apple公司推荐一般用Movie Controller来播放电影。
BOOL CQuickTime::OpenLocalMovie(LPCSTR fullPath)
{
_ASSERTE(fullPath && m_hViewWnd);
if(!fullPath || !m_hViewWnd)
return FALSE;
VIDEO_STATUE oldState = m_enState;
if ( strlen ((char*)fullPath ) != 0)
{
OSErr err;
short nTheFile = 0;
long lControllerFlags = 0L;
&nbs