




已阅读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年西安高新第三中学“名校+”教师招聘考试备考试题及答案解析
- 2025广西北海市银滩中学招聘教师6人笔试模拟试题及答案解析
- 2025福建农林大学农林生物安全全国重点实验室专业技术人员招聘2人笔试参考题库附答案解析
- 2025四川南充市卫生健康委员会南充市红十字中心血站引进高层次人才考核招聘1人笔试参考题库附答案解析
- 2025上汽安吉物流招聘1人笔试备考试题及答案解析
- 2025年湖南岳阳华容县城区学校选调70名教师考试参考题库附答案解析
- 2025云南省玉溪市儿童医院招聘博士研究生(2人)笔试备考试题及答案解析
- 2025海南省第三卫生学校招聘事业编制工作人员23人笔试参考题库附答案解析
- 光伏专业毕业论文结论
- 2025湖南株洲市渌口区南洲镇城镇公益性岗位招聘计划笔试参考题库附答案解析
- 餐饮业中的顾客满意度管理
- 《跟单信用证统一惯例(UCP600)》
- DB32-T 4878-2024 居住区供配电设施建设标准
- 2025年山西中阳钢铁有限公司招聘笔试参考题库含答案解析
- 2025年四川攀枝花钒钛高新国有资本投资运营有限公司招聘笔试参考题库附带答案详解
- 饲料检验化验员职业技能考试题及答案(新版)
- (新版)电信网上大学智能云服务交付工程师认证考试题库-上(单选题)
- 2024-2025学年八年级上册物理 第五章 透镜以及其应用 测试卷(含答案)
- 隧洞施工安全教育培训
- 《化工安全技术》教学设计(教学教案)
- 物理-湖北省2024年秋季鄂东南联盟学校高一年级期中联考试题和答案
评论
0/150
提交评论