




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、多媒體技術(shù)課程論文題 目:基于MFC的多媒體播放器的設(shè)計(jì)與實(shí)現(xiàn) 專 業(yè): 班 級(jí): 姓 名: 學(xué) 號(hào): 指導(dǎo)老師: 摘 要:本程序是基于MFC集成開發(fā)環(huán)境,利用ActiveMovie控件實(shí)現(xiàn)媒體播放的功能的多媒體播放器。具有打開文件、播放、暫停、全屏、音量調(diào)節(jié)、靜音、快進(jìn)、快退等基本播放功能。系統(tǒng)開發(fā)平臺(tái)為Windows 7操作系統(tǒng),程序設(shè)計(jì)環(huán)境采用Visual C+ 6.0。關(guān)鍵字:MFC,ActiveMovie,多媒體1開發(fā)工具及相關(guān)知識(shí)介紹MFC(MicrosoftFoundationClasses)是微軟基礎(chǔ)類庫的簡稱,是微軟公司實(shí)現(xiàn)的一個(gè)c+類庫,主要封裝了大部分的windows A
2、PI函數(shù),vc+是微軟公司開發(fā)的c/c+的集成開發(fā)環(huán)境,所謂集成開發(fā)環(huán)境,就是說利用它可以編輯,編譯,調(diào)試,而不是使用多種工具輪換操作,靈活性較大。vc也指它的內(nèi)部編譯器,集成開發(fā)環(huán)境必須有一個(gè)編譯器內(nèi)核,例如DevC+其中一個(gè)編譯器內(nèi)核就是gcc。 MFC除了是一個(gè)類庫以外,還是一個(gè)框架,在vc+里新建一個(gè)MFC的工程,開發(fā)環(huán)境會(huì)自動(dòng)幫你產(chǎn)生許多文件,同時(shí)它使用了mfcxx.dll。xx是版本,它封裝了mfc內(nèi)核,這樣你就可以專心的考慮你程序的邏輯,而不是這些每次編程都要重復(fù)的東西,但是由于是通用框架,沒有最好的針對(duì)性,當(dāng)然也就喪失了一些靈活性和效率。一個(gè)MFC窗口對(duì)象是一個(gè)C+ CWnd類
3、(或派生類)的實(shí)例,是程序直接創(chuàng)建的。在程序執(zhí)行中它隨著窗口類構(gòu)造函數(shù)的調(diào)用而生成,隨著析構(gòu)函數(shù)的調(diào)用而消失。而Windows窗口則是 Windows系統(tǒng)的一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的實(shí)例,由一個(gè)“窗口句柄”標(biāo)識(shí),Windows系統(tǒng)創(chuàng)建它并給它分配系統(tǒng)資源。Windows窗口在MFC窗口對(duì) 象創(chuàng)建之后,由CWnd類的Create成員函數(shù)創(chuàng)建,“窗口句柄”保存在窗口對(duì)象的m_hWnd成員變量中。Windows窗口可以被一個(gè)程序銷毀,也 可以被用戶的動(dòng)作銷毀。ActiveX控件是基于COM的可重用組件,主要用于插入ActiveX控件包容器或Web頁,ActiveX在外觀上和使用上和普通控件一樣,還提供屬性頁
4、以支持在包容器的設(shè)計(jì)階段對(duì)ActiveX控件的屬性進(jìn)行可視化設(shè)計(jì)。現(xiàn)在多媒體技術(shù)正向二個(gè)方而發(fā)展:一是網(wǎng)絡(luò)化發(fā)展趨勢(shì),與寬帶網(wǎng)絡(luò)通信等技術(shù)相互結(jié)合,使多媒體技術(shù)進(jìn)入科研設(shè)計(jì)、企業(yè)管理、辦公自動(dòng)化、遠(yuǎn)程教育、遠(yuǎn)程醫(yī)療、檢索咨詢,文化娛樂、自動(dòng)測(cè)控等領(lǐng)域;二是多媒體終端的部件化、智能化和嵌入化,提高計(jì)算機(jī)系統(tǒng)本身的多媒體性能,開發(fā)智能化家電。 多媒體有三個(gè)關(guān)鍵特性:多樣性、交互性和集成性。2系統(tǒng)的功能說明 2.1打開文件按鈕 單擊打開按鈕,選定需要播放的文件的路徑并打開,則選定的文件將被添加到播放列表中。 2.2播放/暫停文件按
5、鈕 單擊暫停按鈕,則播放暫停。2.3播放進(jìn)度滑塊 用戶可以通過滑動(dòng)播放進(jìn)度滑塊進(jìn)行對(duì)播放進(jìn)程的控制,實(shí)現(xiàn)音頻視頻文件播放的快進(jìn)和快退。 2.4隨機(jī)/順序/單曲/全曲循環(huán)選項(xiàng) 當(dāng)用戶勾選隨機(jī)/順序/單曲/全曲循環(huán)時(shí),播放模式會(huì)切換到會(huì)轉(zhuǎn)變到相應(yīng)的模式下。 2.5上一曲/下一曲按鈕當(dāng)用戶單擊該按鈕時(shí),播放的文件相應(yīng)變化。 2.6音量調(diào)節(jié)滑塊 用戶可以通過對(duì)音量調(diào)節(jié)滑塊進(jìn)行調(diào)節(jié)從而控制音量的大小。 2.7靜音選項(xiàng) 選擇該選項(xiàng)時(shí)將會(huì)靜音。 2.8停止播放按鈕 單擊該按鈕,停止播放.
6、2.9退出程序按鈕 單擊退出程序按鈕從播放器中退出。3.所設(shè)計(jì)系統(tǒng)實(shí)現(xiàn)的各模塊介紹 3.1 流程圖設(shè)計(jì)打開添加文件到列表關(guān)閉暫停順序、隨機(jī)、列表播放、播放文件停止播放 3.2 各模塊介紹 多媒體播放器播放調(diào)節(jié)播放模式播放列表播放功能音量調(diào)節(jié)進(jìn)度調(diào)節(jié)全曲循環(huán)單曲循環(huán)順序播放隨機(jī)播放退出全屏停止播放暫停打開文件 本多媒體播放系統(tǒng)從界面上看分為四個(gè)部分:播放界面、播放控制、播放列表和播放模式。 (1)播放界面:可以看到背景圖,還可以方便用戶調(diào)整播放進(jìn)度、音量大小,也能對(duì)音頻和視頻進(jìn)行播放和暫停的控制。 (2
7、)播放模式:有順序播放、循環(huán)播放、隨機(jī)選擇三種模式。用戶通過對(duì)這三種模式的選擇可以控制音頻視頻的播放順序。 (3)播放列表:播放列表記錄了被用戶添加的需要播放的文件,方便用戶在添加文件之后可以迅速找到需要播放的文件。 (4)播放控制:主要包括媒體文件的打開、播放進(jìn)度的調(diào)整、暫停、停止、全屏和程序的退出。 4.各模塊源程序及主要部分 4.1.打開文件void CMediaPlayerDlg:OnOpen() m_listCtrl.SetFocus();CString str;TCHAR szFilter = _T("Mp3 File(*.mp3
8、)|*.mp3|Wma File(*.wma)|*.wma|Video File(*.dat)|*.dat|Wave File(*.wav)|*.wav|AVI File(*.avi)|*.avi|Movie File(*.mov)|*.mov|Media File(*.mmm)|*.mmm|Mid File(*.mid;*,rmi)|*.mid;*.rmi|MPEG File(*.mpeg)|*.mpeg|All File(*.*)|*.*|"); CFileDialog fileDlg(TRUE,NULL, NULL,OFN_HIDEREADONLY | OFN_OVERWRIT
9、EPROMPT, szFilter, this);CString strFilePath;if (IDOK = fileDlg.DoModal()strFilePath = fileDlg.GetPathName();strFilePath.MakeUpper();m_player.SetUrl(strFilePath);m_media=static_cast<CWMPMedia>(m_player.newMedia(strFilePath);m_list.appendItem(m_media);m_listCtrl.InsertItem(count,m_media.GetName
10、();m_listCtrl.SetItemText(count,1,_T(m_media.getItemInfo("FileType");m_listCtrl.SetItemText(count,2,_T(m_media.GetDurationString();m_listCtrl.SetItemText(count,3,_T(strFilePath);m_listCtrl.SetItemText(count+,4,_T(m_media.getItemInfo("Duration");POSITION pos;pos = m_listCtrl.GetFi
11、rstSelectedItemPosition();IndexInFieldList = m_listCtrl.GetNextSelectedItem(pos); m_listCtrl.SetItemState(IndexInFieldList,LVIS_SELECTED,LVIS_SELECTED);m_player.SetUrl(m_listCtrl.GetItemText(0,3);m_listCtrl.SetItemState(0,LVIS_SELECTED,LVIS_SELECTED); 4.2播放 void CMediaPlayerDlg:OnPlay() if(m_list.Ge
12、tCount()<=0)MessageBox("列表無文件!","Warning",MB_OK);KillTimer(0);m_control.play();if(m_control.GetCurrentPosition()=0)m_control.SetCurrentPosition(0.01);SetTimer(0,20,NULL); 4.3暫停播放void CMediaPlayerDlg:OnPause() m_control.pause(); 4.4停止播放void CMediaPlayerDlg:OnStop() KillTimer(0)
13、;m_control.stop(); 4.5全屏void CMediaPlayerDlg:OnFullscreen() if(!m_player.GetFullScreen()m_control.pause();AfxMessageBox("請(qǐng)雙擊退出全屏模式!");m_player.SetFullScreen(true);m_control.play(); 4.6退出 void CMediaPlayerDlg:OnExit() SendMessage(WM_CLOSE); void CAboutDlg:OnOK() / TODO: Add extra validation
14、 hereCDialog:OnOK();4.7添加背景圖片CPaintDC dc(this);CRect rect;GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP9);BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
15、 dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0, bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); 4.8添加軟件圖標(biāo)HCURSOR CMediaPlayerDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon; 4.9順序播放功能 void CMediaPlayerDlg:OnOrder() m_order=0; 4.10隨機(jī)播放功能void CMediaPlayerDlg:OnRandom() m_order=1; 4.11單曲循環(huán)功能void C
16、MediaPlayerDlg:OnSinglecircle() m_order=3; 4.12全曲循環(huán)功能void CMediaPlayerDlg:OnAllcircle() m_order=2;4.13播放列表void CMediaPlayerDlg:OnPlaylist() if(flag=!flag)SetWindowPos(NULL,0,0,420,454,SWP_NOMOVE);elseSetWindowPos(NULL,0,0,720,454,SWP_NOMOVE); 4.14音量增加void CMediaPlayerDlg:OnAdd() m_setting.SetVolume(
17、m_setting.GetVolume()+10);m_VOLUME.SetPos(m_setting.GetVolume(); 4.15音量減小void CMediaPlayerDlg:OnSub() int Volume=m_setting.GetVolume();m_setting.SetVolume(Volume=Volume-10);m_VOLUME.SetPos(m_setting.GetVolume(); 4.16靜音void CMediaPlayerDlg:OnSilence() long temp;Temp=m_ActiveMovie.GetVolume();if(temp&
18、gt;-4000)m_ActiveMovie.Pause();m_ActiveMovie.SetVolume(-4000);m_ActiveMovie.Run();elsem_ActiveMovie.Pause();m_ActiveMovie.SetVolume(temp+4000);m_ActiveMovie.Run(); 4.17快進(jìn)退模塊 /快進(jìn)void CMediaPlayerDlg:OnForward() double t = m_control.GetCurrentPosition();m_control.SetCurrentPosition(t=t+10);/快退void CMe
19、diaPlayerDlg:OnReverse() double t = m_control.GetCurrentPosition();m_control.SetCurrentPosition(t=t-10); 4.18上一曲、下一曲 /上一曲void CMediaPlayerDlg:OnLast() m_listCtrl.SetFocus();POSITION pos;CString strName;UINT flag1 = LVIS_SELECTED|LVIS_FOCUSED;pos = m_listCtrl.GetFirstSelectedItemPosition();IndexInFie
20、ldList = m_listCtrl.GetNextSelectedItem(pos); if(IndexInFieldList = -1)AfxMessageBox("列表內(nèi)沒有被選中項(xiàng)!");return;if(IndexInFieldList = 0)AfxMessageBox("已經(jīng)到了列表頭部!");m_listCtrl.SetItemState(IndexInFieldList, flag1, flag1);return;m_listCtrl.SetItemState(IndexInFieldList,LVIS_SELECTED,LVIS_
21、SELECTED);m_listCtrl.SetItemState(IndexInFieldList-1, flag1, flag1);strName=m_listCtrl.GetItemText(IndexInFieldList-1,3);KillTimer(0);m_control.stop();m_player.SetUrl(strName);m_control.SetCurrentPosition(0.01);m_control.play();SetTimer(0,20,NULL);/下一曲void CMediaPlayerDlg:OnNext() m_listCtrl.SetFocus();POSITION pos;CString strName;UINT flag1 = LVIS_SELECTED|LVIS_FOCUSED;pos = m_listCtrl.GetFirstSelectedItemPosition();IndexInFieldList = m_listCtrl.GetNextSelectedItem(pos); if(IndexInFieldList = -1)AfxMessageBox("列表內(nèi)沒有被選中項(xiàng)!");return;if(IndexInFieldList = m_lis
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國花園青石材數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國船用配件數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 科技紙雕藝術(shù)立體紙藝制作教程
- 2025年度股東清算與公司債務(wù)清償一體化協(xié)議
- 紅木家具連鎖加盟與區(qū)域銷售代理合同2025
- 2025年度旅游項(xiàng)目導(dǎo)游臨時(shí)勞務(wù)用工協(xié)議
- 二零二五年度福建省勞動(dòng)合同解除與補(bǔ)償協(xié)議范本
- 二零二五年度私人土地買賣合同范例:環(huán)保產(chǎn)業(yè)用地土地使用權(quán)出讓協(xié)議
- 店鋪監(jiān)控合同范本
- 藝人經(jīng)濟(jì)的合同范本
- 工程結(jié)構(gòu)質(zhì)量特色介紹
- 巴馬格紡絲控制系統(tǒng)軟件說明書(共46頁)
- 肺結(jié)核患者管理ppt課件
- 煤矸石綜合利用項(xiàng)目可行性研究報(bào)告寫作范文
- 清華大學(xué)MBA課程——運(yùn)籌學(xué)
- 《計(jì)量經(jīng)濟(jì)學(xué)》超全題庫及答案(完整版)
- 濕法冶金浸出凈化和沉積PPT課件
- 生產(chǎn)現(xiàn)場(chǎng)作業(yè)十不干PPT課件
- 雨污水管網(wǎng)勞務(wù)施工分包合同
- 通信桿路工程施工
- 初中物理光學(xué)經(jīng)典題(共23頁)
評(píng)論
0/150
提交評(píng)論