




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
WinCE中基于Media Player的多媒体开发在过去的10年里,移动技术已经取得了令人难以置信的进步和成就。应用Windows CE系统的移动设备也在应用和编程方面变得更加灵活和方便。最新的Windows CE设备中加入了Windows Media Player 10 Mobile,它提供了和PC上的WMP控件一样强大的功能。你可以为你的移动设备增加多媒体能力,包括播放视频、音频文件,展示图片等等。你可以在文后所附的段落中找到可用的SDK和资源等相关信息。下面我们简单介绍WMP的一些实现技术。慨述WMP SDK提供了很多的接口,但不是所有都能应用到Windows Mobile平台上来。下面列出可用的一些并进行解释:接口描述IWMPCoreWMP对象模型的根接口。你可以由此获取其他接口的指针并且通过它访问其他空间的基本特性。IWMPControls允许一个应用程序访问Windows Media Player控件;如它的播放,停止和暂停按钮。IWMPError 提供错误信息。IWMPEvents 把由Windows Media Player控件产生的事件提供给一个可以反馈的嵌入式程序。IWMPMedia,IWMPMediaCollection 管理媒体项的属性。IWMPNetwork 设置和获取Windows Media Player所使用的网络连接IWMPPlayer控制Windows Media Player空间的用户接口的行为。IWMPPlaylist,IWMPPlaylistArray,IWMPPlaylistCollection 播放列表操作。IWMPSettings 设置或者获取Windows Media Player的设置。 创建第一个应用程序下面由一个简单的ATL应用程序开始,你将创建一个空间容器窗口。下面的代码段使用了一个标准的ATL技术来展示Windows Media Player控件:LRESULT CWMPHost:OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)AtlAxWinInit();CComPtrIAxWinHostWindow spHost;CComPtrIConnectionPointContainer spConnectionContainer;CComWMPEventDispatch *pEventListener = NULL;CComPtrIWMPEvents spEventListener;HRESULT hr; RECT rcClient;m_dwAdviseCookie = 0; ./ 创建窗口 GetClientRect(&rcClient);m_wndView.Create(m_hWnd, rcClient, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);if (NULL = m_wndView.m_hWnd) goto FAILURE;/ 在窗口中装载OCX hr = m_wndView.QueryHost(&spHost);if (FAILMSG(hr) goto FAILURE;hr = spHost-CreateControl(CComBSTR(_T(WMPlayer.OCX), m_wndView, 0); if (FAILMSG(hr) goto FAILURE;hr = m_wndView.QueryControl(&m_spWMPPlayer); if (FAILMSG(hr) goto FAILURE;/ 开始监听事件 hr = CComWMPEventDispatch:CreateInstance(&pEventListener);spEventListener = pEventListener; if (FAILMSG(hr) goto FAILURE;hr = m_spWMPPlayer-QueryInterface(_uuidof(IConnectionPointContainer), (void*)&spConnectionContainer); if (FAILMSG(hr) goto FAILURE;/ 看OCX 是否支持IWMPEvents接口 hr = spConnectionContainer-FindConnectionPoint(_uuidof(IWMPEvents), &m_spConnectionPoint); if (FAILMSG(hr) goto FAILURE;hr = m_spConnectionPoint-Advise(spEventListener, &m_dwAdviseCookie);if (FAILMSG(hr) goto FAILURE;return 0;FAILURE: :PostQuitMessage(0); return 0;你所要做的只是创建一个控件窗口,包含一个IWMPPlayer接口指针,并且对WMP事件进行响应。ATL可以用比MFC更加简便的方式来完成这些任务,当然你也可以使用MFC。你的程序现在就可以播放Windows媒体文件,比如WMA和WMV。WMPWMP控件也允许程序员来控制它的行为,比如你可以这样开始播放一个媒体文件:LRESULT CWMPHost:OnFileOpen(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)CFileOpenDlg dlgOpen; HRESULT hr;if (dlgOpen.DoModal(m_hWnd) = IDOK) hr = m_spWMPPlayer-put_URL(dlgOpen.m_bstrName);if (FAILMSG(hr)return 0; return 0;Windows Mobile Player 10的移动范例提供了一系列的控件使用范例。在Web应用程序里使用WMP OCX在使用Web浏览器的时候,应用WMP编程就更加容易了(这是SDK里的例子):HTMLHEAD/HEADBODYOBJECT ID=wmpocx WIDTH=200 HEIGHT=150 CLASSID=clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6 TYPE=application/x-oleobject VIEWASTEXTPARAM name=uimode value=none/OBJECTBRscript for=wmpocx event=PlayStateChange(NewState) language=JScriptClipPlayState(NewState);/scriptscript for=wmpocx event=Error() language=JScriptStopPlayer();/scriptpa href=# OnClick=PlayClip(storage cardwebappglass.wmv, ImgVideoPlay, true)IMG id=ImgVideoPlay src=bt_play.gif border=0/a Videobra href=# OnClick=PlayClip(storage cardwebappjeanne.wma, ImgAudioPlay, false)IMG id=ImgAudioPlay src=bt_play.gif border=0/a AudiobrPlay state sequencebrinput type=text id=PlayStateSequence width=30SCRIPT language=JScript!-var CurrentPlayImage = null;var bVideo = null;var bWasBuffering = false;function StopPlayer()wmpocx.controls.stop(); wmpocx.close();if (CurrentPlayImage != null)CurrentPlayImage.src = bt_play.gif; bWasBufferring = false;function ClipPlayState(NewState)PlayStateSequence.value = PlayStateSequence.value + NewState + ;switch(NewState) case 1: / stoppedif (bWasBuffering) bWasBufferring = false;if (CurrentPlayImage != null) CurrentPlayImage.src = bt_play.gif; break; case 6: / bufferingbWasBufferring = true; if (CurrentPlayImage != null) CurrentPlayImage.src = bt_load.gif;break;case 9: / transitioning case 11: / reconnecting bWasBufferring = false;break; case 3: / playing if (bWasBufferring) if (CurrentPlayImage != null) CurrentPlayImage.src = bt_stop.gif; if (bVideo)wmpocx.fullScreen = true; break; default:function PlayClip(url, img, video)if (wmpocx.playState = 3 & bVideo != null & bVideo != video)return;bVideo = video;CurrentPlayImage = img; if (wmpocx.playState = 3) StopPlayer(); elsePlayStateSequence.value = ; if (CurrentPlayImage != null) CurrentPlayImage.src = bt_load.gif; wmpocx.URL = url; -/SCRIPT/BODY/HTML 使用旧版本的WMP控件如果你使用的手持设备没有WMP10,那事情还没有完。你仍然还可以使用WMP OCX版本8来为你的Pocket PC编程,虽然提供的功能特性少,好在也可以基本满足需要。我创建了一个简单的工程来展示它如何在MFC环境下工作。下面的代码段证明了它和ATL方式一样简单:BOOL CWMP8SampleDlg:OnInitDialog()CDialog:OnInitDialog(); / Set the icon for this dialog. The framework does this / automatically when the applications main window is not / a dialog SetIcon(m_hIcon, TRUE);/ Set big icon SetIcon(m_hIcon, FALSE); / Set small icon CenterWindow(GetDesktopWindow(); / center to the hpc screen CRect rect;m_Panel.GetClientRect(&rect);if ( m_PlayerWnd.CreateControl(_uuidof(WMP),L, WS_VISIBLE|WS_CHILD,rect, &m_Panel,AFX_IDW_PANE_FIRST) ) LPUNKNOWN lpUnk = m_PlayerWnd.GetControlUnknown(); HRESULT hr = lpUnk-QueryInterface(_uuidof(IWMP),(void*) &m_spWMPPlayer); else AfxMessageBox(LFailed to create WMP control); :PostQuitMessage(0);return 0;if ( m_spWMPPlayer )m_WMPEvents.m_pMainDlg = (CWMP8SampleDlg*)this;CComPtrIConnectionPointContainer spConnectionContainer;HRESULT hr = m_spWMPPlayer- QueryInterface( IID_IConnectionPointContainer, (void*)&spConnectionContainer );if (SUCCEEDED(hr) hr = spConnectionContainer- FindConnectionPoint( _uuidof(_IWMPEvents), &m_spConnectionPoint ); if (SUCCEEDED(hr) hr = m_spConnectionPoint-Advise(IDispatch*)&m_WMP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江西吉安市文化旅游投资发展集团有限公司及下属子公司招聘10人(第一批)模拟试卷及答案详解(有一套)
- 2025江西瑞昌市部分市直事业单位考选工作人员17人考前自测高频考点模拟试题及完整答案详解
- 2025年4月四川成都市金牛区中医医院招聘17人模拟试卷及一套参考答案详解
- 2025年甘肃省武威市事业单位招聘628人【医疗岗57人】考前自测高频考点模拟试题附答案详解(模拟题)
- 2025江苏中国矿业大学徐海学院招聘专任教师1人模拟试卷及一套参考答案详解
- 2025广东广州市中山大学孙逸仙纪念医院消化内科医教研岗位招聘3人模拟试卷及答案详解(考点梳理)
- 2025广西物流职业技术学院公开招聘教职人员控制数205人考前自测高频考点模拟试题附答案详解(完整版)
- 2025北京昌平区第二批乡村助理员招5人考前自测高频考点模拟试题及答案详解(各地真题)
- 初一周记范文六篇
- 2025年日光温室外保温被项目发展计划
- 企业内部控制培训课件完整版
- 气瓶检验员考试题库
- 五年级上册生命与健康教案
- 学位申请书单位评语
- 新能源汽车火灾事故处置程序及方法
- 九年级语文上册-谈骨气-吴晗-课件
- 教育专业的大学生职业规划书
- GB/T 6283-2008化工产品中水分含量的测定卡尔·费休法(通用方法)
- 中海油劳动合同范本(标准版)
- 施工机械设备情况及进场计划
- 红十字会救护员培训理论试题附答案
评论
0/150
提交评论