在中Visual Studio .NET 2003利用DirectShow播放媒体文件(三)

原创 2004年04月12日 12:28:00

CPlayWndDlg的构造函数中添加初始化代码

CPlayWndDlg::CPlayWndDlg(CWnd* pParent /*=NULL*/)

    : CDialog(CPlayWndDlg::IDD, pParent)

{

    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

 

    m_pGraph      = NULL;

    m_pMediaControl = NULL;

    m_pEvent      = NULL;

    m_pMediaSeeking = NULL;

 

    m_strMediaFile = "";

    m_isPlaying = FALSE;

}

 

由于一些和窗体控制有关的初始化代码不能放在构造函数中进行,我们将其放在CPlayWndDlg::OnInitDialog()中,我们必须在此必须对CPlayWndDlg添加WS_CLIPCHILDREN Style,因为在我们的应用中把视频窗体作为CPlayWndDlg的一个子窗体来使用的,这是非常重要的,许多开发人员在刚开始使用DirectShow时,父窗体的Style没有设置正确,造成视频不能正确显示,代码如下:

    // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动

    //  执行此操作

    SetIcon(m_hIcon, TRUE);         // 设置大图标

    SetIcon(m_hIcon, FALSE);        // 设置小图标

 

    // TODO: 在此添加额外的初始化代码

    ModifyStyle(0, WS_CLIPCHILDREN);

    ((CEdit*)GetDlgItem(IDC_MEDIAFILE_EDIT))->SetReadOnly(TRUE);  

    return TRUE;  // 除非设置了控件的焦点,否则返回 TRUE

}

       添加相应的清除代码,重载CPlayWndDlgDestoryWindow方法,如下:

BOOL CPlayWndDlg::DestroyWindow()

{

    // TODO: 在此添加专用代码和/或调用基类

    if(m_pGraph)

       m_pGraph->Release();

    if(m_pMediaControl)

       m_pMediaControl->Release();

    if(m_pEvent)

       m_pEvent->Release();

    if(m_pMediaSeeking)

       m_pMediaSeeking->Release();

 

    m_pGraph = NULL;

    m_pMediaControl = NULL;

    m_pEvent = NULL;

    m_pMediaSeeking = NULL;

    return CDialog::DestroyWindow();

}

7.修改CPlayWndDlg::OnPaint(),由于现在视频显示区域必须由我们自己进行重画:

void CPlayWndDlg::OnPaint()

{

    if (IsIconic())

    {

        CPaintDC dc(this); // 用于绘制的设备上下文

 

        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

 

        // 使图标在工作矩形中居中

        int cxIcon = GetSystemMetrics(SM_CXICON);

        int cyIcon = GetSystemMetrics(SM_CYICON);

        CRect rect;

        GetClientRect(&rect);

        int x = (rect.Width() - cxIcon + 1) / 2;

        int y = (rect.Height() - cyIcon + 1) / 2;

 

        // 绘制图标

        dc.DrawIcon(x, y, m_hIcon);

    }

    else

    {

       if(m_isPlaying == 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)));

           GetDlgItem(IDC_VW_FRAME)->Invalidate();

       }

 

        CDialog::OnPaint();

    }

}

添加浏览、播放、暂停、关闭四按钮的相应事件响应函数,同时在CPlayWndDlg中添加如下四个私有方法:

    void MoveVideoWindow(void);

    void CleanUp(void);

    BOOL Stop(void);

    BOOL Play(void);

上述方法的实现如下:

 

visual studio 2010环境下在C#程序中嵌入、播放 wav音频文件 图文介绍

http://blog.csdn.net/stormwy/article/details/7901944->转载自 声音资源文件可以放在外部调用播放,另一种方法是直接嵌入到程序里面再调用...
  • wyx13109395842
  • wyx13109395842
  • 2015年05月03日 20:42
  • 1292

Visual Studio 2013中.dll文件的显式调用方法

http://blog.csdn.net/cd520yy/article/details/49455127 http://www.jb51.net/article/36447.htm http:/...
  • piaoxuezhong
  • piaoxuezhong
  • 2017年03月12日 22:33
  • 1237

android-音乐播放器实现及源码下载(四)

本系列博文,详细讲述一个音乐播放器的实现,以及从网络解析数据获取最新推荐歌曲以及歌曲下载的功能。  功能介绍如下:  1、获取本地歌曲列表,实现歌曲播放功能。  2、利用硬件加速感应器,摇动手机...
  • syusikoku
  • syusikoku
  • 2016年09月11日 18:31
  • 2862

asp.net 列表播放媒体文件源码

  • 2009年11月16日 20:45
  • 3KB
  • 下载

幻世(OurDream)2D图形引擎使用教程12——播放媒体文件(2)

幻世(OurDream)2D图形引擎使用教程12,介绍幻世程序如何处理并播放更多格式的媒体文件以及播放动态视频(2)...
  • kflizcst
  • kflizcst
  • 2013年12月16日 09:56
  • 1106

HTML5中播放媒体文件

HTML5的一大亮点就是支持音频文件和视频文件的播放,这样以后的浏览器都不需要依赖flash了,只需要安装一个支持HTML5的浏览器就可以实现在网页上看视频听音乐了。 下面给出的代码是最基础的在HTM...
  • sanmingzi3344
  • sanmingzi3344
  • 2014年02月13日 16:46
  • 798

幻世(OurDream)2D图形引擎使用教程11——播放媒体文件(1)

幻世(OurDream)2D图形引擎使用教程11,介绍幻世程序如何处理并播放媒体文件(1)。...
  • kflizcst
  • kflizcst
  • 2013年12月16日 00:14
  • 1416

Visual Basic 6.0应用编程150例》中的《Example095-媒体文件浏览器 》和《Example096-列表播放媒体文件》在运行过程中需要Windows Media Player 9.0的支持,请读者自行安装.

  • 2010年01月25日 22:50
  • 4.26MB
  • 下载

使用Android MediaPlayer播放媒体文件

我们平时利用Android手机娱乐最常见的方式莫过于听歌和看电影了,当然还有玩游戏,当然,这里我要说的是针对Android对于媒体文件播放的支持。Android里面提供了MediaPlayer类来播放...
  • Hacker_ZhiDian
  • Hacker_ZhiDian
  • 2017年02月14日 21:52
  • 634

Ubuntu/Linux下安装JMF播放媒体文件

下载好并解压JMF2.1.1: http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downlo...
  • rootsongjc
  • rootsongjc
  • 2011年10月21日 22:04
  • 1330
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在中Visual Studio .NET 2003利用DirectShow播放媒体文件(三)
举报原因:
原因补充:

(最多只允许输入30个字)