evc 播放avi

jay_lee_1982 2008-04-23 11:16:18
void CNewAviTestDlg::OnButton1()
{
// TODO: Add your control notification handler code here
IGraphBuilder *m_pGraph;
IMediaControl *m_pControl;
IMediaEventEx *m_pEvent;
IVideoWindow *m_pVideoWindow;
CoInitialize(NULL);

HWND hWnd;
hWnd = GetDlgItem(IDC_STATIC_MPEG)->m_hWnd;

HRESULT hr;

//free(); //Deletes any previous DirectShow instances
hr = CoCreateInstance(CLSID_FilterGraph, NULL,CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&m_pGraph);
if (!SUCCEEDED(hr))
{
MessageBox(_T("CoCreateInstance failed"));
}
hr = m_pGraph->QueryInterface(IID_IMediaControl, (void **)&m_pControl);
if (!SUCCEEDED(hr))
{
MessageBox(_T("IID_IMediaControl failed"));
}
hr = m_pGraph->QueryInterface(IID_IMediaEventEx, (void **)&m_pEvent);
if (!SUCCEEDED(hr))
{
MessageBox(_T("IID_IMediaEventEx failed"));
}

hr = m_pEvent->SetNotifyWindow((OAHWND)hWnd, 0, 0);
if (!SUCCEEDED(hr))
{
MessageBox(_T("SetNotifyWindow failed"));
}


hr = m_pGraph->RenderFile(_T("C\\爱我别走.avi"), NULL);
if (!SUCCEEDED(hr))
{
MessageBox(_T("RenderFile failed"));
//m_pMediaPlayerLog->WriteOut("RenderFile failed,RESULT:0x%x",hr);
}
hr = m_pGraph->QueryInterface(IID_IVideoWindow, (LPVOID *) &m_pVideoWindow);
if (!SUCCEEDED(hr))
{
MessageBox(_T("IID_IVideoWindow failed"));
}

SetWindowLong(hWnd,GWL_STYLE,GetWindowStyle(hWnd) ¦WS_CLIPCHILDREN);
hr = m_pVideoWindow->put_Owner((OAHWND)hWnd);// 这里报错,失败了
if (!SUCCEEDED(hr))
{
MessageBox(_T("put_Owner failed"));
}
hr = m_pVideoWindow->put_WindowStyle(WS_CHILD ¦WS_CLIPCHILDREN ¦WS_CLIPSIBLINGS); //然后这里也会报错 ,失败了
if (!SUCCEEDED(hr))
{
MessageBox(_T("put_WindowStyle failed"));
//m_pMediaPlayerLog->WriteOut("put_WindowStyle failed,RESULT:0x%x",hr);
}
hr = m_pVideoWindow->put_MessageDrain((OAHWND)hWnd);//然后这里也会报错 ,失败了
if (!SUCCEEDED(hr))
{
MessageBox(_T("put_MessageDrain failed"));
//m_pMediaPlayerLog->WriteOut("put_MessageDrain failed,RESULT:0x%x",hr);
}
hr = m_pVideoWindow->put_Visible(OATRUE); //最后是这里也会报错 ,失败了
if (!SUCCEEDED(hr))
{
MessageBox(_T("put_Visible failed"));
//m_pMediaPlayerLog->WriteOut("put_Visible failed,RESULT:0x%x",hr);
}

RECT grc;
GetClientRect(&grc);
m_pVideoWindow->SetWindowPosition(289,81,704,585);
m_pVideoWindow->put_Visible(OATRUE);

m_pControl->Run();

}
哪位大侠能告诉我,我的m_pVideoWindow->put_Owner((OAHWND)hWnd),
m_pVideoWindow->put_WindowStyle(WS_CHILD ¦WS_CLIPCHILDREN ¦WS_CLIPSIBLINGS);
m_pVideoWindow->put_MessageDrain((OAHWND)hWnd);
m_pVideoWindow->put_Visible(OATRUE);
都错在哪里?谢谢!!!
...全文
50 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
jay_lee_1982 2008-04-24
  • 打赏
  • 举报
回复
我把出错的地方代码改成了输出错误代码信息了,如:
hr = m_pVideoWindow->put_Owner((OAHWND)hWnd);//
if (!SUCCEEDED(hr))
{
strError.Format(_T("put_Owner出错:%d"),GetLastError());
MessageBox(strError);
}
hr = m_pVideoWindow->put_WindowStyle(WS_CHILD ¦WS_CLIPCHILDREN ¦WS_CLIPSIBLINGS);
if (!SUCCEEDED(hr))
{
//MessageBox(_T("put_WindowStyle failed"));
strError.Format(_T("put_WindowStyle出错:%d"),GetLastError());
MessageBox(strError);
}
hr = m_pVideoWindow->put_MessageDrain((OAHWND)hWnd);//将所有消息传给父窗体处理
if (!SUCCEEDED(hr))
{
//MessageBox(_T("put_MessageDrain failed"));
strError.Format(_T("put_MessageDrain出错:%d"),GetLastError());
MessageBox(strError);
}
hr = m_pVideoWindow->put_Visible(OATRUE);
if (!SUCCEEDED(hr))
{
//MessageBox(_T("put_Visible failed"));
strError.Format(_T("put_Visible出错:%d"),GetLastError());
MessageBox(strError);
}

RECT grc;
GetClientRect(&grc);
m_pVideoWindow->SetWindowPosition(289,81,704,585);
m_pVideoWindow->put_Visible(OATRUE);

m_pControl->Run();

输出的错误信息为:
put_Owner出错: 0
put_WindowStyle出错: 6
put_MessageDrain出错:6
put_Visible出错: 6
希望知道的大侠多多指教,非常感谢!谢谢!!!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧