VC语言

本类阅读TOP10

·VC++下使用ADO编写数据库程序
·VC++ 学习笔记(二)
·Windows消息大全
·每个开发人员现在应该下载的十种必备工具
·在2000和xp下,隐藏进程,VC6.0测试通过!!!
·用Visual C++打造IE浏览器(1)
·Netmsg 局域网聊天程序
·教你用VC6做QQ对对碰外挂程序
·VC++学习笔记(四)
·VC++中经常使用的函数!~~

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
在中Visual Studio .NET 2003利用DirectShow播放媒体文件(四)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

// IDC_VW_FRAME控件Picture Control主要作用是控制Vedio Window的显示位置

void CPlayWndDlg::MoveVideoWindow(void)

{

    IVideoWindow* pVideoWinow = NULL;

    if(m_pGraph)

    {

       m_pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVideoWinow);

 

       CRect rc;

       GetDlgItem(IDC_VW_FRAME)->GetWindowRect(rc);

       ScreenToClient(rc);

       pVideoWinow->SetWindowPosition(rc.left, rc.top, rc.Width(), rc.Height());

       pVideoWinow->Release();

       pVideoWinow = NULL;

    }

}

 

void CPlayWndDlg::CleanUp(void)

{

    long levCode;

    IVideoWindow *pVidWin = NULL;

 

    if(!m_pGraph)

       return;

 

    m_pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVidWin);

 

    m_pEvent->WaitForCompletion(INFINITE, &levCode);

 

    pVidWin->put_Visible(OAFALSE);

    pVidWin->Release();

    m_pMediaSeeking->Release();

    m_pMediaControl->Release();

    m_pEvent->Release();

    m_pGraph->Release();

 

    m_pMediaSeeking = NULL;

    m_pMediaControl = NULL;

    m_pEvent = NULL;

    m_pGraph = NULL;

 

    UpdateData(FALSE);

    CClientDC dc(GetDlgItem(IDC_VW_FRAME));

    dc.SetBkColor(RGB(0,0,0));

 

    CRect rc;

    GetDlgItem(IDC_VW_FRAME)->GetClientRect(rc);

    ClientToScreen(rc);

    dc.FillRect(rc, CBrush::FromHandle((HBRUSH)GetStockObject(BLACK_BRUSH)));

    Invalidate();

}

 

 

BOOL CPlayWndDlg::Stop(void)

{

    IVideoWindow *pVidWin = NULL;

    HRESULT hr;

 

    if(m_pMediaControl)

    {

       LONGLONG pos = 0;

       hr = m_pMediaControl->Stop();

 

       hr = m_pMediaSeeking->SetPositions(&pos, AM_SEEKING_AbsolutePositioning ,

           &pos, AM_SEEKING_NoPositioning);

 

       m_pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVidWin);

       pVidWin->put_Visible(OAFALSE);

 

       m_isPlaying = FALSE;

       GetDlgItem(IDC_PLAY_BUTTON)->EnableWindow(TRUE);

       GetDlgItem(IDC_PAUSE_BUTTON)->EnableWindow(FALSE);

 

       pVidWin->Release();

 

       long levCode;

 

       m_pEvent->WaitForCompletion(INFINITE, &levCode);

       m_pMediaControl->Release();

 

       return TRUE;

    }

 

    return FALSE;

}

 

BOOL CPlayWndDlg::Play(void)

{

    // 运行

    IVideoWindow *pVidWin = NULL;

 

    if(m_pGraph)

    {

       m_pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVidWin);

       pVidWin->put_Visible(OATRUE);

 

       m_pGraph->QueryInterface(IID_IMediaControl, (void **)&m_pMediaControl);

 

       m_pMediaControl->Run();

 

       m_isPlaying = TRUE;

       GetDlgItem(IDC_PLAY_BUTTON)->EnableWindow(FALSE);

       GetDlgItem(IDC_PAUSE_BUTTON)->EnableWindow(TRUE);

 

 

       return TRUE;

    }

 

    return FALSE;

}




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有