在VC++2005中使用Windows Media Play ActiveX控件

MFC学习记录007——VS2019利用Windows Media Player控件实现视频播放 VS2019利用Windows Media Player控件实现视频播放 阅读详情

VC++2005有许多东西变了,比如ActiveX控件的添加和控制——仅仅为了添加一个Windows Media Player控件,我就弄得头晕转向,按老办法做行不通不说,自己摸索了半天+上网搜索+去书店翻书都没有彻底。幸亏找到了这篇文章,才得以解决。感谢touzani大侠(http://blog.youkuaiyun.com/touzani/)!

皿

原文如下:

以ActiveX控件——媒体播放器为例,说明组件应用之功能强大和使用的简单方便。

 

媒体播放器(Media Player)是DirectX Media中的一个ActiveX控件,支持大多数标准流媒体格式的播放,如ASF、AVI、MPEG、WAV、MIDI、MP3、WMA等,但对RM和MOV支持得不够。

 

创建一个基于对话框的MFC应用程序MPlay

为了能够在项目中使用媒体播放器控件,必须先将媒体播放器控件添加到对话框编辑器工具箱中。(这需要在你的系统中,已经正确安装了微软公司的媒体播放器)

1. 添加ActiveX控件

(VC++ 6.0)

工程-添加到工程-> components and controls   选择Windows Media Player

https://p-blog.youkuaiyun.com/images/p_blog_youkuaiyun.com/touzani/303255/o_mplay.jpg

  插入到工具箱, 再拖到对话框中

( VC++2005方法)

1 打开工具箱窗口,在其空白区单击鼠标右键,在弹出菜单中选中“选择项”菜单项;也可以选VS的“工具/选择工具箱项”菜单项;在弹出的“选择工具箱项”对话框中,选择“COM组件”页;滚动到列表框的底部,选中“Windows Media Player”项,按“确定”钮,关闭对话框。系统会将一个“ <!--[if !vml]--><!--[endif]--> Windows Media Player”控件,加入到工具箱的对话框编辑器栏的底部。这样你就可以将其加入到对话框资源中了。

 

2 你也可以简单地在对话框资源中单击鼠标右键,在弹出菜单中选中“插入ActiveX控件”菜单项;在打开的“插入ActiveX控件”对话框中,滚动列表框,选择底部的“Windows Media Player”项,按“确定”钮,关闭对话框。则系统会将其自动加入到对话框资源中(但这样是不会在工具箱中添加对应控件的)。

)
2)设计对话框

 

在对话框中调整好媒体播放器控件的位置和大小,打开属性窗口,设置其ID为IDC_MP。去掉对话框中 “取消”钮,将“确定”钮中的文字改为“打开(&O)”,并修改其ID为IDC_LOAD(用来打开文件对话框,选择播放的流媒体文件,并将该文件的路径名传递给媒体播放器),而播放、暂停、停止等图形按钮控件中已经有了。
在你为对话框加入媒体播放器控件后,
MFC会自动在资源文件MPlay.rc中添加对它的复杂初始化代码.

还可以按属性窗口工具条上的属性页按钮,在弹出的“Windows Media Player属性”对话框中,进行各种属性设置,例如选中“按比例伸展”和“全屏播放”复选框。

 

3)添加控件变量

为了能使用媒体播放器控件,我们必须为该控件添加一个控件型类变量 m_ctrlMPlayer;

同时给打开按钮添加了变量m_ctrlLoad.

 

(4)使用控件

这里所要做的工作,只是在CMPlayDlg类中,为“装入”按钮添加单击事件BN_CLICKED的处理程序OnBnClickedLoad,并在该函数中打开公用文件对话框,获取用户选择的媒体文件名,并将该文件的路径传递给媒体播放器类对象:

 

VC++ 6.0 代码:

void  CMPlayDlg::OnBnClickedLoad()  ...

VC++ 2005 代码:
void  CMPlayDlg::OnBnClickedLoad()  {

       CFileDialog dlg(TRUE, NULL, L"*.*", OFN_FILEMUSTEXIST,

              L"Active Streaming Format(*.asf)|*.asf|"

              L"Audio Video Interleave Format(*.avi)|*.avi|"

              L"RealAudio/RealVideo(*.rm)|*.rm|"

              L"Wave Audio(*.wav)|*.wav|"

              L"MIDI File(*.mid)|*.mid|"

              L"所有文件(*.*)|*.*||"
);

       
if (dlg.DoModal() == IDOK) {

              
//m_ctrlMPlayer.put_stretchToFit(TRUE); // 伸缩画面,使其适合播放窗口

              
// …… 可以在此进行各种其他设置

              m_ctrlMPlayer.put_URL(dlg.GetPathName()); 
// 传递媒体文件到播放器

       }


}


在该函数中设置了若干流媒体文件过虑器,创建打开文件公用对话框对象,让用户选择要播放的流媒体文件,并将该文件的路径通过调用CMp类的成员函数Set_URL传递给媒体播放器。

 

注意,媒体播放器控件有各种不同的版本,对应的函数名也可能有所不同。如果找不到类似功能的函数,说明你系统中安装的媒体播放器控件有问题,可以点击这里下栽mp.h头文件,用它替代你的同名文件。

现在程序可以编译运行了...

 

(5)改变播放器窗口大小

要使程序可以让用户任意改变播放器窗口的大小,则需要设置对话框(位于属性窗口顶部的外观栏中)的边框属性border为Resizing(可调整大小),该属性的缺省值为Dialog Frame(对话框边框),是不能调整大小的。还可以同时设置Maximize Box和Minimize Box属性为True。

为了使媒体播放器的窗口随对话框而改变大小,需要为项目的对话框类添加WM_SIZE的消息响应函数OnSize。并在该函数中,调用CWnd的成员函数

void MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE);

来改变播放器窗口的大小(注意:媒体播放器类是CWnd的派生类)。注意也要把打开按钮一起移动.

代码如下:

void  CMplayDlg::OnSize(UINT nType,  int  cx,  int  cy)

{

       CDialog::OnSize(nType, cx, cy);

       m_ctrlMPlayer.MoveWindow(
0, 0, cx-40, cy);

       m_ctrlLoad.MoveWindow(cx
-40,0, cx, cy); // 改变打开按钮位置

}

还可以为对话框类再添加WM_KEYUP消息响应函数。在该函数中,响应用户按键Ctrl+L|O|F,打开公用文件对话框,让用户选择媒体文件,并将其传送给播放器对象(后面这部分代码与前面的一样)。

代码如下:(VC++ 2005)


 

源文件下载: MPlay.rar(VC6.0)46KB     MPlay.rar (for VC2005) 45KB

 

 

void CMPlayDlg::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)  {

       if ((GetKeyState(VK_CONTROL) & 1<<15) &&

              (nChar == 'L' || nChar == 'O' || nChar == 'F')) {

              CFileDialog dlg(TRUE, NULL, L"*.*", OFN_FILEMUSTEXIST,

                     L"Active Streaming Format(*.asf)|*.asf|"

                     L"Audio Video Interleave Format(*.avi)|*.avi|"

                     L"RealAudio/RealVideo(*.rm)|*.rm|"

                     L"Wave Audio(*.wav)|*.wav|"

                     L"MIDI File(*.mid)|*.mid|"

                     L"所有文件(*.*)|*.*||");

              if (dlg.DoModal() == IDOK) {

                     m_ctrlMPlayer.put_stretchToFit(TRUE); // 伸缩画面,使其适合播放窗口

                     CString fn = L"MPlayer : " + dlg.GetFileName(); // 构造程序标题

                     SetWindowText(fn); // 设置程序窗口的标题

                     m_ctrlMPlayer.put_URL(dlg.GetPathName());

              }


       }


       CDialog::OnKeyUp(nChar, nRepCnt, nFlags);
}
MFC创建MEDIA_PLAYER播放器,简单教程 我使用的工具是vs2013。1、创建MFC工程(对话框),不介绍了。删掉工程生成的对话插件,确定和取消按钮;2、在上面图示中,鼠标右键插入ActiveX控件,找到Windows Media Player选择确定(如图下);3、在窗口中,把media player的窗口拉到合适的大下。添加按键控件,改名播放,如图示:4、在项目栏那里,找到解决方案,右键添加类,MFC,ActiveX的MFC类,确定;... 阅读详情

相关推荐

C#AxWindowsMediaPlayer 控件的应用

这就难了,关键是当前播放列表获取不到当前播放歌曲的索引,这就难办了,4.在列表控件双击选中要播放的歌曲播放,在列表控件的鼠标双击事件中。获得控件选中项的索引,再通过索引找到当前播放列表对应索引的歌曲路径。当然这样也能播放,但是控件上的上一曲和下一曲按钮就不能用了,如下图。可以操作,暂停,停止,上一曲,下一曲,音量大小,静音,进度条。最后只能用获取当前歌曲的名称在列表控件中查找来获得当前的索引。能获得当前歌曲的名称,标题,作者,大小,时间等等,就这样当点击下一曲时,列表控件也会自动选中下一个,

qq_31178679的博客 4997

使用Windows Media Play-ActiveX控件

以ActiveX控件——媒体播放器为例,说明组件应用之功能强大和使用的简单方便。 媒体播放器(Media Player)是DirectX Media中的一个ActiveX控件,支持大多数标准流媒体格式的播放,如ASF、AVI、MPEG、WAV、MIDI、MP3、WMA等,但对RM和MOV支持得不够。 创建一个基于对话框的MFC应用程序MPlay为了能够在项目中使用媒

touzani的专栏 1万+

C++ builder 使用ActiveX控件.

BCB 使用ActiveX控件

MediaPlayer9 ActiveX 攻略

  作者:小高 一、安装         这个不用多说,多数人都知道,在Delphi7中选择“Component ——Import ActiveX Con

c0ffee1982的专栏 1832

openeuler在线/离线安装docker服务

openeuler在线/离线安装docker服务

haixuti7的博客 1071

电动汽车充电设备标准化设计方案:电气原理图

80kW一体式一机一枪充电机电气原理 主电路拓扑见图1,配置1个250A直流充电连接装置,提供4个充电模块安装位置,根据充电功率需求可选配2~4个20kW充电模块。内置直流电能表和计费控制单元,实现计量计费和充电控制功能。 图1 80kW一体式一机一枪充电机主电路拓扑 ...

santirenpc的博客 1万+

在VS(2005、2008、2010)的MFC工程中添加flash控件

一、准备工作 第一步:下载并安装AdobeFlash Player。 从官方网站(http://get.adobe.com/cn/flashplayer/)上下载最新的FlashPlayer(大约为2.66M),并安装。对于Windows 32位系统,其默认安装目录为:C:\WINDOWS\system32\Macromed\Flash\;对于64位系统,为:C:\Windows\SysWOW

逍遥子曰: 3408

WRF后处理:python cartopy绘制土地利用/土地分类图//python绘制WRF下垫面类型(以北极为例)

下垫面类型对于WRF的地表过程十分重要,而在我们研究WRF的地表过程之前,需要对输入的土地利用类型进行一些绘制,以便后续的修改。LU_MODIS21函数定义了绘制的土地类型、标签与对应色标,我们使用时,直接引用LU_MODIS21()即可返回。其实很简单,只要将你拥有的土地类型数据提取出来,将原本函数中的labels和C切片,重新定义色标再绘制即可。在这里,我将以北极地区为例,绘制北极地区的WRF下垫面数据,我使用的MODIS21这类。

weixin_43750300的博客 3859

MFC和FLASH互动-网上查得例子

一、准备工作 第一步:下载并安装Adobe Flash Player。 从官方网站(http://get.adobe.com/cn/flashplayer/)上下载最新的Flash Player(大约为2.66M),并安装。对于Windows 32位系统,其默认安装目录为:C:\WINDOWS\system32\Macromed\Flash\;对于64位系统,为:C:\Windows\SysW...

qq_40544338的博客 467

手把手教你用STM32驱动SPL06-001气压传感器(附完整代码与避坑指南)

本文详细介绍了如何使用STM32驱动SPL06-001气压传感器,包括硬件连接、寄存器配置、驱动层实现和数据补偿算法。通过完整的代码示例和避坑指南,帮助开发者快速掌握SPL06传感器的应用技巧,提升嵌入式系统开发效率。

weixin_42552315的博客 294

黑金ZYNQ7010开发板开箱实测:从接线到串口通信的保姆级指南

本文提供黑金ZYNQ7010开发板从开箱到串口通信的完整实操指南。详细介绍了硬件连接、驱动安装、启动模式设置及串口终端配置等关键步骤,并针对常见问题提供排查思路,帮助FPGA开发者快速上手ZYNQ平台,建立稳定的调试通道。

weixin_29266749的博客 466

Windows Media Player控件研究

初级问题:我的那个定时提醒程序中要用到它,初步使用问题已解决。基本使用步骤如下:一、往控件箱中添加此控件:wmp.dll二、往窗体上拖控件三、wmp.URL=XXXX;wmp.play()即可。平常应用就这三步就OK了。但是,我想写个播放器的话,就遇到了一些问题。在dotnet中使用非基于dotnet的控件,需要做一些额外的事,不过这些事vs已经帮我们做好了,当我们拖了此控件进窗体时,vs会自动调

liucaifa2008的专栏 2895

光电振荡器(OEO):从原理到应用,解锁高频微波信号新纪元

本文深入解析了光电振荡器(OEO)的核心原理与前沿应用。OEO通过巧妙的光-电-光转换机制,利用光学谐振腔产生高频、高纯度、低相位噪声的微波信号,有效突破了传统电子电路的频率瓶颈。文章详细拆解了其工作流程,并探讨了在雷达系统、高速光通信及精密测量等领域的硬核应用价值。

weixin_29231027的博客 365

用MFC ActiveX Control Wizard生成的OCX控件

<br />转自:http://hi.baidu.com/tiancaiyan8/blog/item/06441b355635891991ef397c.html<br /> <br /><br />用MFC ActiveX Control Wizard生成的OCX控件,Web直接调用失败,因为IE在调用之前会先检测控件有没有安全机制。详见:http://msdn2.microsoft.com/en-us/library/Aa751977.aspx#Mtps_DropDownFilterText<br />解

问题记事本 4362

QT开发串口程序与单片机通讯

如果有对象对这个信号感兴趣,想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。的内容,虽然实现的功能很简单,但是QT上位机开发的步骤基本就是这些步骤,通过这个基础实例把这些套路摸透我们就可以接着进行后续更多QT程序地开发学习了。QWidget类:所有用户界面对象的基类,窗口部件是用户界面的一个基本单元,它从窗口系统接收鼠标,键盘和其他消息,并在屏幕上绘制自己。我们上面运行的上位机都是在Qt Creator中编译运行的,如果我们需要把编写好的可执行文件发送给别人使用的话还需要进行打包。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 946

ESP8266开发之旅 基础篇① 走进ESP8266的世界

    欢迎大家来到ESP8266的世界,从现在开始,笔者将带领大家慢慢揭开ESP8266神秘的面纱。 1. 简介     从笔者的角度来说,ESP8266这个词可以理解为ESP8266EX芯片(当然,后面也有可能出现了其他芯片,这里首推ESP8266EX)以及依赖ESP8266EX芯片开发的系列模组的简称。     ESP8266EX是由乐鑫信息科技公司(Espressif)出品的一款应用于物联...

单片机菜鸟哥的博客 15万+

mfc+最大最小化窗口+控件变化+图片(视频帧)显示在控件上

一.添加最大化最小化窗口 鼠标右键单击对话框空白处选择属性,将Maximize Box和Minimize Box修改为True,即可实现对话框最大化和最小化功能的添加。 二.控件变化 目的:使所用控件的大小随着对话框窗口的最大化和最小化进行相应尺寸的变化。 思路:比如原来对话框大小为a,现在为b,原来控件大小为c,那么现在的控件大小应该为c*b/a;(注意a不能是0)。 方法:通过Windows的...

LXYnizhan的博客 1547

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

COM组件开发实践(七)---多线程ActiveX控件和自动调整ActiveX控件大小(上)

转载自: http://www.cnblogs.com/phinecos/archive/2008/12/29/1364675.html   声明:本文代码基于CodeProject的文章《A Complete ActiveX Web Control Tutorial》修改而来,因此同样遵循Code Project Open License (CPOL)。 根据A Complet

chenyujing1234的专栏 3179

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

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

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Windows Media Player控件的所有属性和方法

Windows Media Player控件的所有属性和方法----1 player.GetPlayState() 返回播放器状态(0:停止,1:连接,2:缓冲,3:播放,4:暂停,5:寻找) 网页中嵌入MediaPlayer时,各种属性与方法设置 播放: MediaPlayer.Play() 暂停: MediaPlayer.Pause() 定位: MediaPlayer.Set

jiangqin115的专栏 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Media player控件常用属性

属性/方法名: 说明:  [基本属性]   URL:String; 指定媒体位置,本机或网络地址

jomakzhao的专栏 3476

【个人笔记】Active X控件"Windows Media Player"使用心得

MediaPlayer的时代已经过去了,自从Windows 2000以来,还有几个人的电脑上装有Classic Media Player?都被WMP取代了,估计90后都没听说过它。既然软件如此,依托它的控件亦然,MediaPlayer作为控件,不仅反应慢,而且不支持MP3(即便支持,也少得可怜)。于是我也准备与时俱进一把,选择WMP播放器的同名控件。 不必寻找控件的PAS代码,只要在下拉

企划分析团 1172

windows media player的简单操作步骤

该博客旨在分享IT技术心得和实际工作中遇到问题的解决方法,以下是新浪博客地址http://blog.sina.com.cn/qianyumolu,则为分享经济、行业趋势、心灵文章等,有兴趣的朋友可以踩踩,讨论分享 ------------------------------------------------------------------------------------------

阡语陌路的专栏 2608
上一篇: c++资源之不完全导引
下一篇: wxWidgets动态事件表爱好者备查手册
Utensil
博客等级 码龄19年 61粉丝 37原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值