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

vs2015配置directshow (1)属性管理器->Debug\win32->user (2)vc++目录->包含目录里添加①C:\Program Files\MicrosoftSDKS\windows\v7.1\samples\multimedia\directshow\baseclasses     ②C:\Program Files\MicrosoftSDKS\windows\v7.1\samples\multimed 阅读详情

在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

}

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

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);

上述方法的实现如下:

 

QT+vs+directshow获取摄像头名称及其支持的分辨率 QT5.7.0 + visual studio 2013 + directshow9 获取摄像头名称及其支持的分辨率 立即下载

相关推荐

ADS使用Smith圆图进行阻抗匹配

在处理RF系统的实际应用问题时,总会遇到一些非常困难的工作,对各部分级联电路的不同阻抗进行匹配就是其中之一。一般情况下,需要进行匹配的电路包括天线与低噪声放大器(LNA)之间的匹配、功率放大器输出(RFOUT)与天线之间的匹配、LNA/VCO输出与混频器输入之间的匹配。匹配的目的是为了保证信号或能量有效地从“信号源”传送到“负载”。 阻抗匹配(impedance matching) 信号源内阻与所接传输线的特性阻抗大小相等且相位相同,或传输线的特性阻抗与所接负载阻抗的大小相等且相位相同,分别称为传输线的输

红茶绿茶和奶茶的博客 3万+

MFC修改对话框类基类为自定义对话框类(VS2019)

需求 在MFC中,有时候可能需要创建派生自自定义对话框类的对话框类(这句话很复杂,慢慢理解),也就是说创建了一个自定义对话框A,再创建一个自定义对话框B,如果B用到了A的很多方法,就需要让B派生自A。但是,给对话框添加类时,基类选项里并没有A类,只有默认的CDialogEx等类。下面,我们就来探讨一下手动把B类设置为A类的派生类的方法。 假如,我们要模仿Word中的查找和替换功能,有两个类,一个是查找对话框类,类名为CFindTextDialog,一个是替换对话框类,类名是CReplaceDialog。因为

[PE]经典八炮的博客 2003

青龙人形机器人硬件平台设计全解析:从构型到控制系统的实战指南

本文深度解析了青龙人形机器人硬件平台的设计全流程,从需求分析、构型设计到核心系统实现。文章详细阐述了其43个自由度的仿生构型、高动态性下肢设计、灵巧作业系统以及分布式控制架构,并探讨了旋转关节与直线关节等关键技术选型,为开发者提供了从理论到实践的完整硬件设计指南。

weixin_29248313的博客 382

五子棋算法

详细请看 Github:https://github.com/shanhuijie/GoWatch/tree/master/fiveinarow five in a row (五子棋成功判断) 从横、纵、 左斜升、 左斜降 四个角度判断 欢迎探讨 package fiveinarow import( "sort" "math" ) const( Vertical = 1...

qq_39490852的博客 995

odoo19/18集成reportbro 打印插件 完美支持静默打印

ReportBro设计器 一个用于创建PDF和XLSX报告模板的javascript插件。ReportBro Designer可以轻松集成到您的Web应用程序中。每个人都可以设计和编辑文档模板,并直接在浏览器中预览它们。可以使用服务器上的 (有关完整的文档和演示,请参阅上的ReportBro项目网站。reportBro官方没有提供。测试环境:odoo17社区版。2.产品标签打印设计。

zxltwins的博客 2772

lidar点云比赛-Southlidar软件使用入门

lidar点云比赛-Southlidar软件使用入门 广西高校重点实验室培训基地 系统控制与信息处理重点实验室 本篇博客来自河池学院: 智控无人机小组 写作时间:2020.09.29 一、软件资源及安装 1.下载地址: https://pan.baidu.com/s/1jN1pynmAZOqj5mMx774pVg 提取码:gkvv (资源来自南方测绘) 2.安装 进入链接,找到软件文件夹, 内含文件即为安装包 3.下载成功后按提示安装即可 4.安装成功后桌面自动创建一个快捷方式 二、界面布

qq_49621416的博客 4891

MFC修改窗口或者对话框类名实现程序一个实例运行

背景: 笔者做软件的时候,经常遇到的情况是查找另外一个进程,给它发消息。 但是往往FindWindow根据“窗口标题”去查找,比较慢并且有时候还会失败 改成用窗口类名查找,可能比较好。 1、MFC更改对话框类名办法 MFC下更改窗口的默认类名(ClassName)_飞鹤的程序员人生-优快云博客_窗口类名 2、MFC更改单文档框架类名的办法 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd

tajon1226的专栏 2120

保姆级教程:用Cadence Sigrity Power DC搞定HI3516A板卡电源压降仿真(含常见报错解决)

本文提供了一份详细的Cadence Sigrity Power DC直流压降仿真教程,特别针对HI3516A板卡设计。从环境准备、器件建模到仿真执行和结果解读,全面覆盖了电源完整性分析的关键步骤,并提供了常见报错的解决方案,帮助工程师快速掌握直流压降分析技术。

weixin_42569329的博客 323

关于更改对话框类型的问题(WS_CHILD, WS_OVERLAPPED, WS_POPUP)

目的:对话框A_Dlg,可能被B_Dlg创建为子对话框(WS_CHILD),也可能C_Dlg创建为弹出对话框(WS_POPUP) 环境:VS2013 步骤:1.设置对话框A_Dlg的初始类型设为child(直接在VS里改资源属性),供B_Dlg使用。        2.A_Dlg在PreSubclassWindow()更改代码:ModifyStyle(WS_CHILD | WS_OVER

dangshiban9703的博客 1741

用COMSOL计算复合材料板频散曲线:从建模到绘图全流程

导波在板结构中传播时,不同频率成分的速度不同,即频散现象。理解频散曲线是识别导波模态、确定相速度与群速度的基础,也是无损检测和结构健康监测中信号解读的关键。对于碳纤维增强复合材料等各向异性板,频散关系更加复杂,传统解析方法难以求解,数值仿真成为主流手段。通过COMSOL结合周期性边界条件与特征频率扫描,可以高效计算出复合材料板的频散曲线,进而绘制相速度和群速度随频率变化的图谱,为实验模态识别、换能器激励频率选择提供依据。本文以一个2毫米单向碳纤维板为例,详细介绍几何建模、材料参数设置、网格收敛验证、参数扫描

weixin_31412781的博客 235

STM32开发笔记85: SX1268驱动程序设计(芯片唤醒)

单片机型号:STM32L053R8T6 本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍芯片唤醒驱动程序。 一、RxDutyCycle模式 在讲述本篇内容之前,我们先来看一下SX1268的一种模式RxDutyCycle,译为中文为接收占空比模式。其可使用SetRxDutyCycle命令进入RxDutyCycle模式,我们来看一下该命令的详细解释。 该命令具有2个参数,...

snmplink的博客 4068

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

 DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。DirectShow为多媒体的捕捉和回放提供了强有力的支持。运用DirectShow我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。它广泛地支持各种媒体格式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒体数

sunjin007的专栏 2119

ofd转pdf报错:org.ofdrw.reader.ZipUtil.unZipFileByApacheCommonCompress【已解决】

ofd转pdf报错:java.lang.NoClassDefFoundError:org/apache/commons/io/function/IOIterator at org.ofdrw.reader.ZipUtil.unZipFileByApacheCommonCompress,java.lang.NoSuchMethodError:org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.getNextEntry()

黄团团的个人博客 1283

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

浏览、播放、暂停、关闭四按钮的相应事件响应函数如下:void CPlayWndDlg::OnBnClickedBrowseButton(){    CFileDialog dlgFile(TRUE, NULL, NULL,       OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,       "Movie Files (*.av

sunjin007的专栏 1293

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

// IDC_VW_FRAME控件Picture Control主要作用是控制Vedio Window的显示位置void CPlayWndDlg::MoveVideoWindow(void){    IVideoWindow* pVideoWinow = NULL;    if(m_pGraph)    {       m_pGraph->QueryInterface(II

sunjin007的专栏 1304

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

3.设置工程属性    项目→PlayWnd属性→配置属性→链接器→输入→附加依赖项,添加库文件Strmiids.lib 和Quartz.lib。由于Dshow.h头文件是在任何DirectShow工程中都要用到的,因此我们stdafx.h加入如下行:#include  4.设计对话框,如下: IDC_STATIC控件类型Stat

sunjin007的专栏 1121

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Visual C++.NET DirectShow编程

Visual C++.NET DirectShow编程作者: 时间: 2004年4月14日 15:28:51 来源:天极论坛    DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。DirectShow为多媒体的捕捉和回放提供了强有力的支持。运用DirectShow我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相

wangyh专栏 1238

通过代码修改MFC对话框资源并创建对话框

CDialogTemplate dlt; if (true == dlt.Load(MAKEINTRESOURCE(IDD_DLG1))) { dlt.SetFont(L"宋体", 14); CDlg1 *pDlg = new CDlg1(); pDlg->CreateIndirect(dlt.m_hTemplate);...

蓦然回首 1190

VS2013-mfc创建对话框和修改对话框属性

创建对话框主要分两大步: (1)创建对话框资源,主要包括创建新的对话框模板、设置对话框属性和为对话框添加各种控件; (2)生成对话框类,主要包括新建对话框类、添加控件变量和控件的消息处理函数。 创建基于对话框的应用程序框架: (1)文件->新建->项目 (2)MFC应用程序 (3)MFC应用程序向导,默认、下一步。 (4)应用程序类型,选择基本对话框,其他默认。 (5)一直选择...

kittimzhe的博客 1228

VS2013/MFC编程入门之五(对话框:创建对话框模板和修改对话框属性)

在上一讲中介绍了MFC的消息映射机制,属于原理方面的知识。对于VC++编程入门学习者来说可能有些抽象,本文会把消息映射的知识渗透到后面的教程中。本节开始为大家讲解偏应用的知识-创建对话框。        对话框,大家应该很熟悉了,在我们常用的软件中大多都有对话框界面,例如,qq的主界面其实就是个对话框,只是它做了很多美工方面的工作,将其大大美化了。        创建对话框主要分两大步

赵小咖的博客 1万+

directshow入门级的好文章,相当不错

Visual C++.NET DirectShow编程作者: 时间: 2004年4月14日 15:28:51 来源:天极论坛    DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。DirectShow为多媒体的捕捉和回放提供了强有力的支持。运用DirectShow我们可以很

削发为尼,剃度为僧 7523

Visual Studio 2010 调用 DirectShow 采集摄像头图像

一年前做的运动目标检测,调用摄像头用的都是OpenCV提供的接口,

Sad_Sugar的专栏 7206

(转载)闲话下visual studio 2008和directshow SDK开发filter

<br />最近在做基于directshow的render filter,乱七八糟的心得积了写,拿出来侃侃。我的配置环境是vista, visual studio 2008, windows sdk, directshow9b sdk。据说,从visual studio 2005开始,directshow就从directX中分离出来了,而部分header/library被加到了windows sdk里,而且最终逐渐会被media foundation取代。我对directshow不熟,不过摸爬滚打几天也算有

banditzhi的专栏 2245

在Windows7和Visual Studio 2010中编译DirectShow的例程AMCap的问题

在将AMCap转换为VS2010项目时,可能会遇到如下错误提示: error C1189: #error :  This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended. 翻了很多帖子都没有很好的解决,遂决定自己解决试试

Galaxy_Li的专栏 2022

windows 10+VS2015配置directshow

这段时间要做虚拟摄像头,其中要用到directshow的库,在网上找都是很久以前的,最近说directX的SDK集中在windows的SDK中了,下windows的SDK安装好久好久,还有文章说windows10的SDK里面不知道为啥没有Directshow,得安装win7 SDK再copy directshow到win10系统中去,我一看怎么这么麻烦。 后来查到资料说其实并不需要,网上的参考资...

程序媛 1万+
上一篇: 在中Visual Studio .NET 2003利用DirectShow播放媒体文件(二)
下一篇: 在中Visual Studio .NET 2003利用DirectShow播放媒体文件(四)
sunjin007
博客等级 码龄23年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值