版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、武漢理工大學(xué)可視化編程(vc)課程設(shè)計(jì)學(xué) 號(hào): 課 程 設(shè) 計(jì)課程名稱可視化編程(vc)學(xué) 院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院專 業(yè)軟件工程班 級(jí)姓 名指導(dǎo)教師岑 麗20132014學(xué)年 第2學(xué)期目 錄1 課程設(shè)計(jì)要求12 系統(tǒng)的簡(jiǎn)單操作及功能說(shuō)明12.1 系統(tǒng)簡(jiǎn)單操作12.2 功能說(shuō)明23 所設(shè)計(jì)系統(tǒng)實(shí)現(xiàn)的各模塊介紹33.1 流程圖設(shè)計(jì)33.2 各模塊介紹34 各模塊源程序及對(duì)源程序主要部分的相應(yīng)注釋說(shuō)明44.1 播放控制44.2 播放模式54.3 播放列表84.4 播放界面95 運(yùn)行結(jié)果界面截圖125.1 初始界面125.2 添加文件135.3 播放音頻135.3 播放視頻146 程序設(shè)計(jì)問(wèn)題與總結(jié)1
2、56.1 設(shè)計(jì)中遇到的問(wèn)題及相應(yīng)的解決方法和解決過(guò)程156.2 個(gè)人總結(jié)17參考文獻(xiàn)181 課程設(shè)計(jì)要求學(xué)生姓名:_ 專業(yè)班級(jí): 指導(dǎo)教師: 岑麗 工作單位:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 題 目: 基于mfc的多媒體播放器系統(tǒng)實(shí)現(xiàn)1. 制作一個(gè)具有自己設(shè)計(jì)風(fēng)格的媒體播放器。2. 要求能隨機(jī)選取要播放的文件,實(shí)現(xiàn)前進(jìn),回退,暫停,循環(huán)播放,音量大小調(diào)節(jié)等基本功能。3. 要求能播放多種格式(至少四種或四種以上)的音頻視頻格式文件。 4. 可以實(shí)現(xiàn)其它附加功能(不在要求范圍之內(nèi))5. 界面良好,功能完善2 系統(tǒng)的簡(jiǎn)單操作及功能說(shuō)明 2.1 系統(tǒng)簡(jiǎn)單操作1 播放文件按鈕 當(dāng)用戶想要打開(kāi)某個(gè)播放文件時(shí),只要選中
3、播放列表中的需要播放的文件,再單擊播放文件按鈕,該文件就會(huì)進(jìn)行播放。再次單擊播放文件按鈕,則播放暫停;2 添加文件按鈕當(dāng)用戶想添加播放文件到播放列表時(shí),可以單擊添加文件按鈕,選定需要播放的文件的路徑并打開(kāi),則選定的文件將被添加到播放列表中;3 列表/單一循環(huán)按鈕當(dāng)用戶單擊列表/單一循環(huán)按鈕時(shí),播放模式會(huì)切換到會(huì)轉(zhuǎn)變到相應(yīng)的模式下;4 上一首/下一首按鈕當(dāng)用戶單擊該按鈕時(shí),播放的文件相應(yīng)變化;5 播放進(jìn)度滑塊滑塊當(dāng)文件正在進(jìn)行播放時(shí),用戶可以通過(guò)滑動(dòng)播放進(jìn)度滑塊進(jìn)行對(duì)播放進(jìn)程的控制,實(shí)現(xiàn)音頻視頻文件播放的快進(jìn)和快退;6 音量調(diào)節(jié)滑塊用戶可以通過(guò)對(duì)音量調(diào)節(jié)滑塊進(jìn)行調(diào)節(jié)從而控制音量的大小;7 停止播
4、放按鈕單擊該按鈕,停止播放;8 退出程序按鈕當(dāng)用戶對(duì)播放器操作完成后可以通過(guò)單擊退出程序按鈕從播放器中退出,退出程序后播放列表將自動(dòng)清空。2.2 功能說(shuō)明 本次的課程設(shè)計(jì)是利用mfc類庫(kù),結(jié)合activex控件資源開(kāi)發(fā)一款簡(jiǎn)單而實(shí)用的多媒體播放軟件multimedia player播放器。multimedia player播放器主要對(duì)常用音頻及視頻格式的文件實(shí)現(xiàn)以下功能:1 能隨機(jī)選取要播放的音頻或視頻文件2 播放控制:播放/暫停、停止、退出,列表循環(huán)、單一循環(huán)等;3 顯示播放進(jìn)度及播放菜單;4 音量大小調(diào)節(jié);5 播放多種格式(*.mp3,*.wma,*.wav,*.avi,*.mov)的音頻
5、視頻文件;6 控制播放進(jìn)度和播放模式。3 所設(shè)計(jì)系統(tǒng)實(shí)現(xiàn)的各模塊介紹3.1 流程圖設(shè)計(jì)3.2 各模塊介紹 本多媒體播放系統(tǒng)從界面上看分為四個(gè)部分:播放控制、播放模式、播放列表,播放界面。1 播放控制:主要包括媒體文件的播放、暫停、停止和程序的退出;2 播放模式:包括列表循環(huán)、單一播放、上下選擇三種模式。用戶通過(guò)對(duì)這三種模式的選擇來(lái)控制音頻視頻的播放順序;3 播放列表:播放列表記錄了被用戶添加的需要播放的文件,方便用戶在添加文件之后可以迅速找到需要播放的文件;4 播放界面:音頻的頻譜和視頻都會(huì)顯示在播放界面上,播放界面還可以方便用戶調(diào)整播放進(jìn)度、音量大小,也能對(duì)音頻和視頻進(jìn)行播放和暫停的控制。
6、4 各模塊源程序及對(duì)源程序主要部分的相應(yīng)注釋說(shuō)明4.1 播放控制1 播放/暫停媒體文件void cmy2dlg:onpause() / todo: add your control notification handler code here/static bool i=true;if(i)i=false; m_wj.getcontrols().pause();m_pause.setwindowtext(播放);killtimer(timer1);elsei=true; m_wj.getcontrols().play();m_pause.setwindowtext(暫停); settimer(
7、timer1,100,0);2 停止播放當(dāng)文件還未播完時(shí),單擊停止按鈕時(shí),調(diào)用文件停止函數(shù)onstop(),系統(tǒng)回到初始狀態(tài)。具體如下:void cmy2dlg:onstop() / todo: add your control notification handler code herekilltimer(timer1);m_wj.getcontrols().stop();m_pause.setwindowtext(播放);i=false;3 退出系統(tǒng)void cmy2dlg:onclose() / todo: add your control notification handler co
8、de herekilltimer(timer1);destroywindow();4.2 播放模式1 循環(huán)播放功能 在函數(shù)onstate() 中輸入以下代碼。void cmy2dlg:onstate() / todo: add your control notification handler code hereif(s)m_state.setwindowtext(單一循環(huán));s=false;elsem_state.setwindowtext(列表循環(huán));s=true;2 選擇上/下一個(gè)文件void cmy2dlg:onreverse() / todo: add your control no
9、tification handler code hereif(k)position pos = m_list.getfirstselecteditemposition();item = m_list.getnextselecteditem(pos);m_list1.insertitem(0,filenameitem-1);m_list.setitemtext(0,1,null);if(item!=0)pathnameitem-1.makeupper();m_wj.seturl(pathnameitem-1); m_wj.getcontrols().play();if(item=0)pathna
10、meitem.makeupper();m_wj.seturl(pathnameitem); m_wj.getcontrols().play();k=false;if(item0)item-;if(item=0)m_list1.insertitem(0,filename0);m_list.setitemtext(0,1,null);void cmy2dlg:onforward() / todo: add your control notification handler code hereif(k)position pos = m_list.getfirstselecteditempositio
11、n();item = m_list.getnextselecteditem(pos);m_list1.insertitem(0,filenameitem+1);m_list.setitemtext(0,1,null);pathnameitem+1.makeupper();m_wj.seturl(pathnameitem+1); m_wj.getcontrols().play();k=false;if(itemj-1)item+;if(item=j-1)m_list1.insertitem(0,filenameitem);m_list.setitemtext(0,1,null);4.3 播放列表
12、添加文件到列表void cmy2dlg:onopen() /添加文件到列表/ todo: add your control notification handler code herem_slider.setpos(0);char szfilefilter= available file (*.*)|*.*|/五種音頻視頻格式類型mp3 file(*.mp3)|*.mp3|/音頻wma file(*.wma)|*.wma|/音頻wave file(*.wav)|*.wav|/音頻avi file(*.avi)|*.avi|/視頻movie file(*.mov)|*.mov|;/視頻/可以播放
13、mp3、wma、avi、wav、mov格式的文件cfiledialog dlg(true,null,null,ofn_hidereadonly,szfilefilter);if(dlg.domodal()=idok)cstring pathname=dlg.getpathname();pathnamej=dlg.getpathname();filenamej=dlg.getfilename();pathname.makeupper();m_wj.seturl(pathname); int nitem=m_list.insertitem(j,dlg.getfilename(); m_list.s
14、etitemtext(nitem,1,null);m_list1.insertitem(0,dlg.getfilename();m_list.setitemtext(0,1,null);j+;item+;4.4 播放界面1 播放進(jìn)度顯示媒體文件在播放時(shí)的同時(shí)可以顯示對(duì)應(yīng)的進(jìn)度,通過(guò)鼠標(biāo)拖動(dòng)滑塊,實(shí)現(xiàn)快進(jìn)快退功能。void cmy2dlg:onoutofmemoryslider2(nmhdr* pnmhdr, lresult* presult) / todo: add your control notification handler code here*presult = 0;void cmy
15、2dlg:ontimer(uint nidevent) / todo: add your message handler code here and/or call defaultstatic r=10,g=0,b=10;if(r250)r=r+10;else r=150;if(g250)g=g+15;else g=5;if(b250)b=b+20;else b=150;m_list1.settextcolor(rgb(r,g,b);m_list1.invalidate();/m_list1.updatewindow();static int t=0;double position=m_sli
16、der.getpos();double len=m_wj.getcurrentmedia().getduration(); double l=m_wj.getcontrols().getcurrentposition();m_slider.setpos(int(l*100/len);if(position=99&s) t+;if(t=2)if(k&m)position pos = m_list.getfirstselecteditemposition();item = m_list.getnextselecteditem(pos);if(item=j-1)item=-1;m_list1.ins
17、ertitem(0,filenameitem+1);m_list.setitemtext(0,1,null);pathnameitem+1.makeupper();m_wj.seturl(pathnameitem+1);if(itemj-1)item+;/if(item=j-1)/item=-1;m=false;t=0;m_wj.getcontrols().play();cdialog:ontimer(nidevent);2 音量調(diào)節(jié) 單擊窗口水平滾動(dòng)條,調(diào)節(jié)音量高低。void cmy2dlg:onoutofmemoryslider1(nmhdr* pnmhdr, lresult* presu
18、lt) / todo: add your control notification handler code here*presult = 0;void cmy2dlg:onhscroll(uint nsbcode, uint npos, cscrollbar* pscrollbar) / todo: add your message handler code here and/or call defaultcsliderctrl *slider=(csliderctrl*) pscrollbar;if(slider=&m_slider)long position=m_slider.getpo
19、s(); m_wj.getsettings().setvolume(position);if(slider=&m_slider)double len=m_wj.getcurrentmedia().getduration(); killtimer(timer1); double position=m_slider.getpos();m_wj.getcontrols().setcurrentposition(position/100)*len); m_wj.getcontrols().play();settimer(timer1,100,0);cdialog:onhscroll(nsbcode,
20、npos, pscrollbar);5 運(yùn)行結(jié)果界面截圖5.1 初始界面5.2 添加文件5.3 播放音頻5.3 播放視頻6 程序設(shè)計(jì)問(wèn)題與總結(jié)6.1 設(shè)計(jì)中遇到的問(wèn)題及相應(yīng)的解決方法和解決過(guò)程1 第一次制作多媒體播放器,按鈕的功能總是出現(xiàn)問(wèn)題,寫完的代碼總是報(bào)錯(cuò),無(wú)法實(shí)現(xiàn)按鈕的功能。最后向同學(xué)請(qǐng)教,明白原因是改變了按鈕的屬性之后沒(méi)有建立按鈕的類向?qū)?,?dǎo)致出現(xiàn)問(wèn)題。解決的方法就是,在改變按鈕的屬性后立刻為按鈕建立類向?qū)?,并在?guī)定的位置填寫實(shí)現(xiàn)按鈕功能的代碼。2 為系統(tǒng)添加背景圖失敗,在編譯運(yùn)行的時(shí)候會(huì)報(bào)錯(cuò)。這個(gè)問(wèn)題是由于添加背景圖的代碼填寫位置不對(duì)。原本我填這段代碼的時(shí)候直接把代碼放在了整個(gè)代碼
21、的最后,通過(guò)查找資料得知本段代碼應(yīng)該填在onpaint消息的else中,填寫完成后重新編譯運(yùn)行,則相應(yīng)的圖片就會(huì)顯示為播放器的背景圖;3 待解決小問(wèn)題一開(kāi)始設(shè)置音量圖標(biāo),通過(guò)界面不斷的優(yōu)化,覺(jué)得這個(gè)圖標(biāo)不合適,但是新的圖標(biāo)文件添加到icon中,組建的時(shí)候總顯示錯(cuò)誤。6.2 個(gè)人總結(jié)1 關(guān)于課設(shè)這次課程設(shè)計(jì)我做了多媒體播放器的設(shè)計(jì),除了前文所述也就是最終的那些功能,其實(shí)有想過(guò)實(shí)現(xiàn)音頻文件歌詞的同步播放功能,但是由于很多問(wèn)題無(wú)法解決就放棄了。查閱過(guò)很多資料,上網(wǎng),整天的呆在圖書館,不斷的出錯(cuò),不斷的修改完善,雖然最終的系統(tǒng)功能可能有點(diǎn)簡(jiǎn)單,界面不夠好看,但用自己做的小應(yīng)用播放音樂(lè)視頻,還是很開(kāi)心,覺(jué)得自己這幾天的付出也值了。2 感悟當(dāng)然,更重要的是,這次課設(shè),確實(shí)鍛煉了我的實(shí)際運(yùn)用能力,加深了我對(duì)vc+這門課程的理解。我逐漸掌握了用mfc創(chuàng)建基于對(duì)話框的應(yīng)用程序,同時(shí)了解了mci相關(guān)知識(shí)。作為編程人員,能編代碼容易,但要靈活調(diào)試程序并編譯通過(guò)才是難點(diǎn)。vc的學(xué)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版建筑工地噪聲污染控制與管理服務(wù)合同3篇
- 2024版共有停車場(chǎng)地塊出租協(xié)議細(xì)則版B版
- 培訓(xùn)師聘用合同書
- 二零二五版Excel合同管理模板共享平臺(tái)運(yùn)營(yíng)及維護(hù)合同3篇
- 二零二五年環(huán)保產(chǎn)業(yè)項(xiàng)目合作貸款協(xié)議3篇
- 二零二五版公園雕塑藝術(shù)與文化遺產(chǎn)保護(hù)合同3篇
- 個(gè)人住宅租賃合同參考格式(2024版)版B版
- 2025年離婚協(xié)議中財(cái)產(chǎn)評(píng)估方法
- 建筑公司合同管理流程范文
- 2024版關(guān)聯(lián)公司貸款協(xié)議樣本版B版
- 高二物理競(jìng)賽霍爾效應(yīng) 課件
- 金融數(shù)學(xué)-(南京大學(xué))
- 基于核心素養(yǎng)下的英語(yǔ)寫作能力的培養(yǎng)策略
- 柴油發(fā)電機(jī)空載試運(yùn)行和負(fù)荷試運(yùn)行記錄
- 現(xiàn)場(chǎng)安全文明施工考核評(píng)分表
- 亞什蘭版膠衣操作指南
- 四年級(jí)上冊(cè)數(shù)學(xué)教案 6.1口算除法 人教版
- DB32-T 3129-2016適合機(jī)械化作業(yè)的單體鋼架塑料大棚 技術(shù)規(guī)范-(高清現(xiàn)行)
- 6.農(nóng)業(yè)產(chǎn)值與增加值核算統(tǒng)計(jì)報(bào)表制度(2020年)
- 人工挖孔樁施工監(jiān)測(cè)監(jiān)控措施
- 供應(yīng)商物料質(zhì)量問(wèn)題賠償協(xié)議(終端)
評(píng)論
0/150
提交評(píng)論