- 浏览: 39360 次
- 性别:
- 来自: 广州
最新评论
由于最近做的东西需要一个播放器组件,当时想到了media player和TCPMP,最初在PC下做个测试的程序来测试Media Player 组件的使用方法,当时运行在PC上没有任何问题,但是当将代码移植到WinCE上运行时候编译没有报告错误,但是运行时候报告,组件没有注册,通过对于查找网上相关资料,发现WinCE上虽然微软打的是media player 9组件的招牌实际上做的事media player 6.4版本的勾当,通过以下步骤解决该问题
在PC机的控制台中里执行以下命令
:regsvr32 c:\windows\system32\wmp.dll /u 来卸载media player 9版本的组件,
然后再执行
regsvr32 c:\windows\system32\msdxm.ocx 来注册media player6.4版本组件
然后重新构筑程序编译就,运行就可以通过了
media play 的相关一些属性其中ClickToPlay 属性可以设置是否对于鼠标点击响应 如果将该属性设置为false的话这样在在播放时候点击播放界面则播放不会停止。
media play的一些接口方法如下
put_ShowControls(FALSE);//是否显示控制按钮
put_ShowGotoBar(FALSE);是否显示进度
put_ShowPositionControls(FALSE);
put_ShowStatusBar(FALSE);//是否显示状态栏
put_ShowTracker(FALSE);//是显示播放的轨迹
put_DisplaySize(3);//设置播放的宽度 3代表fullsize
/*
enum
{
mpDefaultSize = 0,
mpHalfSize = 1,
mpDoubleSize = 2,
mpFullScreen = 3,
mpFitToSize = 4,
mpOneSixteenthScreen = 5,
mpOneFourthScreen = 6,
mpOneHalfScreen = 7
}MPDisplaySizeConstants;
*/
media player6.4 可以相应的事件消息
EndOfStream //当前播放的文件播放完的事件
Buffering//数据缓冲的事件(根据传的参数可以知道是否缓冲完成)
ReadyStateChange //准备得状态完成
PositionChange //文件位置改变
NewStream //播放新的文件
PlayStateChange//播放状态的改变(传回两个参数第一个为 oldstate 第二个为newstate)
其中playstatechange 主要有以下状态
由于media player6.4组件中对于播放列表的实现不像media palyer9中会自动生成一部分代码。这里我在实现播放列表时候主要借助于这些相关事件来实现的,同时media player 在两个播放文件中间跳转时候会出现显示相关的图标,我这里为了让两个文件跳转显得更加连贯也是通过这些事件来是实现的,为了能够相应media player组件的事件消息 需要添加以下源码
首先在头文件中 声明 DECLARE_EVENTSINK_MAP() 在cpp中添加 BEGIN_EVENTSINK_MAP(CTestDlg, CDialog) //{{AFX_EVENTSINK_MAP(CTestDlg) ON_EVENT(CTestDlg, IDC_MEDIAPLAYER1, 3002 /* EndOfStream */, OnEndOfStreamMediaplayer1, VTS_I4) ON_EVENT(CTestDlg, IDC_MEDIAPLAYER1, 3003 /* Buffering */, OnBufferingMediaplayer1, VTS_BOOL) ON_EVENT(CTestDlg, IDC_MEDIAPLAYER1, -609 /* ReadyStateChange */, OnReadyStateChangeMediaplayer1, VTS_I4) ON_EVENT(CTestDlg, IDC_MEDIAPLAYER1, 2 /* PositionChange */, OnPositionChangeMediaplayer1, VTS_R8 VTS_R8) ON_EVENT(CTestDlg, IDC_MEDIAPLAYER1, 3008 /* NewStream */, OnNewStreamMediaplayer1, VTS_NONE) ON_EVENT(CTestDlg, IDC_MEDIAPLAYER1, 3012 /* PlayStateChange */, OnPlayStateChangeMediaplayer1, VTS_I4 VTS_I4) //}}AFX_EVENTSINK_MAP END_EVENTSINK_MAP() 这样就可以在相应的事件相应函数中填写相应的当该事件发生时候的相应代码
以下为我那个程序的示例程序的主要部分的代码 BEGIN_EVENTSINK_MAP(CElevatorGuiderDlg, CDialog) //{{AFX_EVENTSINK_MAP(CTestDlg) ON_EVENT(CElevatorGuiderDlg, IDC_MEDIAPLAYER1, 3002 /* EndOfStream */, EndOfStream, VTS_I4) ON_EVENT(CElevatorGuiderDlg, IDC_MEDIAPLAYER1, DISPID_READYSTATECHANGE, ReadyStateChangeMediaplayer1, VTS_I4) //}}AFX_EVENTSINK_MAP END_EVENTSINK_MAP() 为了让播放器隐藏时候看起来和没有隐藏差不多在MESSAGEMAP中添加ON_WM_ERASEBKGND()映射
同时在源文件中实现 BOOL CElevatorGuiderDlg:: OnEraseBkgnd(CDC *pDC) { CRect rcClient; GetClientRect(&rcClient); pDC->FillSolidRect(rcClient, RGB(0,0,0)); // 设置窗体的背景为黑色和media player播放器的背景色 黑色一致 return TRUE; } 同时由于如果在两个播放的视频文件切换时候,当视频没有开始播放而处于加载的过程时候不暂时将播放器隐藏的话,会出现media player的那个图标,看起来不太舒服通过增添一下代码实现 void CElevatorGuiderDlg::ReadyStateChangeMediaplayer1(l ong ReadyState) { TRACE(_T("#ReadyStateChangeMediaplayer: %d\n"),ReadyState); if(ReadyState==0) m_MediaPlayer.ShowWindow(SW_HIDE); if(ReadyState==3) m_MediaPlayer.ShowWindow(SW_SHOW); // } 上述代码在Wince6.0 ARM6410上测试通过
在解决问题时候参看了一下网页 组件相关事件:http://blog.csdn.net/ymh8416/archive/2008/03/19/21 97171.aspx
添加对于组件的事件相应:http://blog.csdn.net/xiaoqiqixiao/archive/2006/01/ 09/574542.aspx
发表评论
-
分割字符串:strtok()函数
2012-07-06 09:51 723函数strtok将字符串分解为一系列标记(token)标记 ... -
正则表达式限制文本框只能输入数字,小数点,英文字母,汉字
2012-07-06 09:45 815正则表达式限制文本框只能输入数字,小数点,英文字母,汉 ... -
[转载]VI正则表达式
2012-07-06 09:37 626原文地址:http://wowtianwen.blog.h ... -
Windows Mobile Device Emulator In-Depth
2012-07-06 09:30 752模拟器在Windows Mobil ... -
Gridview中当鼠标经过数据行时弹出一个层显示数据
2012-07-05 20:45 731JS代码 页面源码 ... -
Flex4与WebService通信
2012-07-02 10:41 564首先需要一个需要提供一个WebService服务。这里用一 ... -
flex 幸运大转盘 代码
2012-07-02 10:41 725>"+testT.originY) ... -
Flex连接WebService实例
2012-07-02 10:41 498- ... -
Flex 4 Canvas backgroundImage 问题
2012-07-02 10:41 419倾听,慎言,勇行,自省... ... -
DAMP环境搭建详解 DAMP----Debian Apache2 Mysql PHP5
2012-07-01 00:18 794DAMP环境搭建详解 DAMP----Debian ... -
主流地图API比较
2012-07-01 00:18 652最近因为工作关系,对市面上主流的地图API都进行了一遍了解 ... -
Android HAL 介绍
2012-07-01 00:17 739HAL 介绍 Android 的 HAL (硬件抽像层 ... -
超级面板皮肤及其使用
2012-07-01 00:17 517画出类似于遨游那样的最大化,最小化,关闭,还原按钮的皮肤。 ... -
纪念Rokon停止更新――从零开始用Rokon开发一个小游戏
2012-07-01 00:17 575懒骨头你给我听着:你有健康的家人~满意的工作~未知的女友~ ...
相关推荐
检测WinCE车机能否使用CarPlay方法教程.url
上次发错了,对不住大家,下过的重新免分下载! IImage组件是在wince5.0新加入的,它可以调用公共接口来显示多种图片格式(jpg,png,gif,bmp),并且还可以扩展用以支持更多图片.
WINCE WINDOWS MEDIA PLAYER源码,在MIPS平台下试过!~
wince5.0下MEDIA PLAYER全部完整的源代码
wince下使用sqlite.doc wince下使用sqlite.doc
wince windows mobile下界面注册DLL,解决了没有command的问题,支持wince内核5.0及以上版本! 最终版!!!
wince6.0 media player
这个是错误的资源,到我资源里找我新传的WINCE中图片浏览(IImage组件使用源码)资源,谢谢
NTable is open source .NET grid control based on Model View architecture and made like as JTable ... NTable developed as lite and quick control for .NETCF 2.0 and Windows Mobile (Pocket PC, WinCE).
通过COM组件,实现WINCE下的与WINDOW PLAY相同的音视频解码器
WinCE下嵌入式数据库sqlite的使用,项目配置。实例教程。
wince下 ov9650的使用 可以拍照 保存
wince5.0下MEDIA+PLAYER全部完整的源代码.rar WINCE5.0下的ARM下的GPIO驱动和例程73462665GPIO.rar wince5.0下的串口调试程序和源代码.rar WINCE5.0下的手写输入法,支持ARMV4I内核的CPU.rar wince5.0下的芯片为VT...
JAP.DLL wince 上的数据服务组件 用于JAP数据库嵌入式版本
window下开发wince系统程序用到的组件,串口与udp网络通信
wince下使用文本文档作为数据库,本文件验证过,使用c#开发,各位可以测试一下,非常好用的。
WinCE下定制的大软键盘组件,去除了原来的F1~F12等键,只保留了数字、字母和其他一些必要的按键,可在专用设备上使用。直接拷贝到工程目录下,替换原来的文件,并Make Runtime Image即可。
在wince5.0下使用sqlce2.0, 需要在wince5.0上安装 C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v2.0\wce400\armv4 sqlce20.dev.ppc.wce4.armv4.CAB sqlce20.ppc.wce4.armv4.CAB...
第一次在wince下开发,公司要求使用dui窗口,在网上找了很多资料,没有成功,后面看到自己在win7下duilib界面有一个wzduilib的,就调试了几次,可以正常运行了,不同的sdk可能需要修改duilib的sdk,由于第一次使用...
JAP.DLL wince 上的数据服务组件用于JAP数据库嵌入式版本