//播放视频文件
void CVideoPlay::PlayFromFile(CString szFile)
{
WCHAR wFile[MAX_PATH];
HRESULT hr;
MultiByteToWideChar( CP_ACP, 0, szFile.GetBuffer(_MAX_PATH), -1, wFile, MAX_PATH );
szFile.ReleaseBuffer();
//创建过滤器图表生成器接口
CHECK_ERROR(::CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void **)&pigb),"CoCreateInstance Error") ;
//查询数据流控制接口
pigb->QueryInterface(IID_IMediaControl, (void **)&pimc);
//查询过滤器图表事件接口
hr=pigb->QueryInterface(IID_IMediaEventEx, (void **)&pimex);
//查询视频播放窗口接口
pigb->QueryInterface(IID_IVideoWindow, (void **)&pivw);
//查询数据流位置接口
hr=pigb->QueryInterface(IID_IMediaPosition, (void**) &pmp);
//为指定的多媒体文件创建一个过滤器图表进行处理
hr = pigb->RenderFile(wFile, NULL);
//得到视频文件的播放时间
if (SUCCEEDED(hr))
hr=pmp->get_Duration(&tLength);
//显示视频播放窗口
DisplayVideoWin();
if (SUCCEEDED(hr))
pimc->Run(); //播放视频
pimex->SetNotifyWindow((OAHWND)m_hwnd, WM_PLAYOVER, 0);
}
int CVideoPlay::PlayOver()
{
//播放视频文件
void CVideoPlay::PlayFromFile(CString szFile)
{
WCHAR wFile[MAX_PATH];
HRESULT hr;
MultiByteToWideChar( CP_ACP, 0, szFile.GetBuffer(_MAX_PATH), -1, wFile, MAX_PATH );
szFile.ReleaseBuffer();
//创建过滤器图表生成器接口
CHECK_ERROR(::CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void **)&pigb),"CoCreateInstance Error") ;
//查询数据流控制接口
pigb->QueryInterface(IID_IMediaControl, (void **)&pimc);
//查询过滤器图表事件接口
hr=pigb->QueryInterface(IID_IMediaEventEx, (void **)&pimex);
//查询视频播放窗口接口
pigb->QueryInterface(IID_IVideoWindow, (void **)&pivw);
//查询数据流位置接口
hr=pigb->QueryInterface(IID_IMediaPosition, (void**) &pmp);
//为指定的多媒体文件创建一个过滤器图表进行处理
hr = pigb->RenderFile(wFile, NULL);
//得到视频文件的播放时间
if (SUCCEEDED(hr))
hr=pmp->get_Duration(&tLength);
//显示视频播放窗口
DisplayVideoWin();
if (SUCCEEDED(hr))
pimc->Run(); //播放视频
pimex->SetNotifyWindow((OAHWND)m_hwnd, WM_PLAYOVER, 0);
}
int CVideoPlay::PlayOver()
{
long evCode,evParam1,evParam2;
long evCode,evParam1,evParam2;