基于VC的媒體播放器設(shè)計與功能實現(xiàn) 畢業(yè)論文

上傳人:1777****777 文檔編號:38751419 上傳時間:2021-11-08 格式:DOC 頁數(shù):35 大小:2.02MB
收藏 版權(quán)申訴 舉報 下載
基于VC的媒體播放器設(shè)計與功能實現(xiàn) 畢業(yè)論文_第1頁
第1頁 / 共35頁
基于VC的媒體播放器設(shè)計與功能實現(xiàn) 畢業(yè)論文_第2頁
第2頁 / 共35頁
基于VC的媒體播放器設(shè)計與功能實現(xiàn) 畢業(yè)論文_第3頁
第3頁 / 共35頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《基于VC的媒體播放器設(shè)計與功能實現(xiàn) 畢業(yè)論文》由會員分享,可在線閱讀,更多相關(guān)《基于VC的媒體播放器設(shè)計與功能實現(xiàn) 畢業(yè)論文(35頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、 安徽新華學(xué)院本科畢業(yè)論文(設(shè)計) 本科畢業(yè)論文(設(shè)計) (題目:基于VC的媒體播放器設(shè)計與功能實現(xiàn)) 姓 名: 學(xué) 號: 0942057102 專 業(yè): 電子信息科學(xué)與技術(shù) 院 系: 電子通信工程 指導(dǎo)老師: 職稱學(xué)歷: 助教 /研究生 完成時間: 2013.5 教務(wù)處制 安徽新華學(xué)院本科畢業(yè)論文(設(shè)計)獨創(chuàng)承諾書 本人按照畢業(yè)論文(設(shè)計)進(jìn)度計劃積極開展實驗(調(diào)查)研究活動,實事求是地做好實驗(調(diào)查)記錄,所呈

2、交的畢業(yè)論文(設(shè)計)是我個人在導(dǎo)師指導(dǎo)下進(jìn)行的研究工作及取得的研究成果。據(jù)我所知,除文中特別加以標(biāo)注引用參考文獻(xiàn)資料外,論文(設(shè)計)中所有數(shù)據(jù)均為自己研究成果,不包含其他人已經(jīng)發(fā)表或撰寫過的研究成果。與我一同工作的同志對本研究所做的工作已在論文中作了明確說明并表示謝意。 畢業(yè)論文(設(shè)計)作者簽名: 日期: 2013.5 基于VC的媒體播放器設(shè)計與功能實現(xiàn) 摘

3、 要 目前常見的多媒體軟件應(yīng)該說各有特點,但幾乎每一個都存在著不如人 意的地方。我的主題是“媒體播放器軟件設(shè)計基于VC開發(fā)工具,首先介紹目 前一些媒體和媒體播放器,然后介紹了一種由本人設(shè)計的多媒體播放器——MediaPlayer?;趘c播放器,使用系統(tǒng)MCI(Media控制接口)命令接口編程,具有體積小,支持的格式,占用系統(tǒng)資源少,支持播放列表編輯器,支持多種視頻格式等功能優(yōu)勢。 關(guān)鍵詞:播放器;MCI;播放列表;音頻;視頻 Media player design and functio

4、n realization based on vc Abstract Common multimedia software should have their own characteristics, but almost every no satisfactory way. My topic is "media player software design" development tool based on VC++, the first is the existing media and media player, and a multimedia playing their

5、 detailed design of media player. Game player is an integrated development environment based on MFC, using the system MCI (Media controller interface) command interface programming, is small, support multiple format, occupying less system resources to support the playlist editor, support a variety o

6、f video formats such as functional advantages. Keywords: media player; MCI; play l ist; audio; video II 目 錄 1緒 論 1 1.1課題研究的目的和術(shù)發(fā)展的現(xiàn)狀 1 1.1.1研究本課題的目的 1 1.1.2技術(shù)應(yīng)用的基本現(xiàn)狀 1 1.1.3論文完成的主要工作 2 1.1.4本課題中的重點 2 1.1.5基本功能描述 2 1.2媒體格式簡介. 3

7、 1.2.1什么是WMF SDK 3 1.2.2 WMF SDK體系結(jié)構(gòu) 3 1.2.3 生成器結(jié)構(gòu) 3 1.2.4 讀取器結(jié)構(gòu) 4 1.2.5 WMF SDK編程開發(fā)環(huán)境配置 4 2 軟件開發(fā)與設(shè)計 5 2.1設(shè)計思路 5 2.2設(shè)計步驟 7 2.3界面設(shè)計 10 2.4關(guān)鍵功能的實現(xiàn) 13 3 系統(tǒng)測試 22 3.1測試目的 22 3.2測試環(huán)境 22 3.3檢測報告 22 3.4測試結(jié)果 24 4結(jié) 論. 27 致 謝. 28 參考文獻(xiàn). 26 1 緒 論 多媒體技術(shù)的概念及多媒體技術(shù)在十九年代早期的應(yīng)用,經(jīng)過十年多的發(fā)展,隨著

8、計算機科學(xué)的發(fā)展和網(wǎng)絡(luò)的普及和多媒體技術(shù)的發(fā)展,已成為計算機領(lǐng)域的一個熱點技術(shù)的發(fā)展,各種媒體格式的視圖,如何簡單和方便的播放各種媒體已經(jīng)成為人們普遍關(guān)注的問題,和媒體播放器的開發(fā)已非常重要。 1.1課題研究的目的和技術(shù)發(fā)展的現(xiàn)狀 1.1.1研究本課題的目的 隨著技術(shù)的發(fā)展,多媒體素材類型也有所增加,包括音頻,視頻,圖像,動畫,音頻和視頻,因為圖像和其他大的信息容量,在過去的硬件限制,多媒體應(yīng)用并不廣泛,隨著硬件技術(shù)的不斷提高,多媒體技術(shù)已廣泛用于各類人才。多媒體課件,網(wǎng)絡(luò)課程的發(fā)展,網(wǎng)站,軟件,項目管理和要求的多媒體材料的使用,所以為多媒體的發(fā)展準(zhǔn)備了一個實際的意義,與其他多媒體播放器

9、相比,這是一個強大的媒體播放器,占用空間小,它是密切結(jié)合現(xiàn)有的多媒體資源的應(yīng)用現(xiàn)狀,不僅具有直觀感強,不失一般性。 1.1.2技術(shù)應(yīng)用的基本現(xiàn)狀 微軟公司于1998推出的Visual C + + 6,它是一個平臺,支持Win32應(yīng)用程序(應(yīng)用程序),服務(wù)(服務(wù))和控制(控制)的可視化編程的集成環(huán)境。并用VC++ 5最大的區(qū)別是,它有更強大的功能,MSDN(微軟開發(fā)的網(wǎng)絡(luò))提供VC++ 6包括所有微軟程序產(chǎn)品在線幫助;此外,可用的對象的成員函數(shù)的參數(shù)類型的類成員變量和成員函數(shù),并可以在屏幕上動態(tài)地顯示,使用戶不用記得那些復(fù)雜的無聊的函數(shù)名和復(fù)雜的參數(shù),使編程更容易使用。VC + + 6是微軟

10、的旗艦產(chǎn)品,功能強大且編程獲得程序的偏好。多媒體技術(shù)進(jìn)行了以下方面的有效應(yīng)用: ①多媒體管理信息系統(tǒng),顯示系統(tǒng)。 ②多媒體電子出版物(標(biāo)題)。 ③計算機輔助教學(xué),教育和培訓(xùn)的設(shè)計與制作;電腦藝術(shù);電腦游戲娛樂;雙向電影;協(xié)同工作。有三個主要趨勢:進(jìn)一步提高計算機支持的協(xié)同工作環(huán)境下的智能;多媒體技術(shù);多媒體信息實時處理和壓縮算法集成到CPU。 1.1.3論文完成的主要工作 根據(jù)研究,基于VC的MFC對話框的媒體播放器的開發(fā),利用Windows MCI(媒體控制接口)處理控件,VC 6與ActiveX控件——activemoviecontrol對象來實現(xiàn)各種格式的媒體播放和程

11、序界面。首先確定所要解決的問題是明確的名稱的MCI函數(shù)和命令的消息類型和功能;其次是流媒體的具體過程的分析,在公開的媒體裝置的應(yīng)用需要做的事情,所以在加入過程支持代碼的應(yīng)用程序;一個粗略的輪廓,在應(yīng)用程序的程序(最好的畫流程圖),開始考慮設(shè)計程序框架,設(shè)計應(yīng)用程序的外觀;最后也是最關(guān)鍵的是編寫代碼以顯示此功能的媒體播放器的基本實現(xiàn),再次是程序的調(diào)試和完善。 1.1.4本課題中的重點 本課題中的重點是在ActiveMovie控件的應(yīng)用,動態(tài)控制EM電影是微軟公司推出的多媒體編程控制提供音頻和視頻媒體文件非常聲音的播放,可以支持多種文件格式,普通的WAV文件和AVI文件的視頻文件MPEG壓縮格

12、式,可以正常播放。控件可以自動區(qū)分基于文件擴展名的設(shè)備類型,并完成相應(yīng)的控制。因此,如果你的應(yīng)用程序準(zhǔn)備提供多媒體支持,然后使用ActiveMovie控件是一個好主意。事實上,許多優(yōu)秀的多媒體應(yīng)用,多媒體播放是使用ActiveMovie控件實現(xiàn)設(shè)計的應(yīng)用精心程序的用戶界面,我們可以開發(fā)一個功能齊全,美觀大方,具有高水平的多媒體播放器。使用一個activemovie控制多媒體應(yīng)用的發(fā)展可以大大提高多媒體開發(fā)效率,只要設(shè)置控件的文件屬性,名,來確定控制開放媒體文件名,然后執(zhí)行run方法可以播放媒體文件;通過設(shè)置選擇。最后用鼠標(biāo)點擊按鈕完成播放,停止,暫停,快進(jìn),快退等功能。 1.1.5基本功能描

13、述 多媒體播放軟件現(xiàn)在幾乎成為每個家庭電腦安裝必要的軟件,比較流行的 有迅雷播放器,Windows媒體播放器和快播、百度影音等等,可以播放MP3,RM,RMVB,MPEG,由軟件DAT等格式的多媒體文件。這些商業(yè)軟件的功能已經(jīng)做得相當(dāng)完美,也符合大多數(shù)普通消費者的胃口,但是很多人的電腦安裝不同的播放器,因為不同的播放器有不同的特點,并不是每個人都連接到一個播放器,設(shè)計一個符合自己的習(xí)慣的播放器是可行的。 VC++6.0強大的MFC、AppWizard、Class Wizard,方便使用,類似向?qū)Ш透鞣N控件可以方便地建立各種應(yīng)用程序。同時,要實現(xiàn)更先進(jìn)和復(fù)雜的功能,還可利用資源的Acti

14、veX控件,在現(xiàn)有資源的控制,可以節(jié)省自己編程的復(fù)雜的過程,從而實現(xiàn)更先進(jìn)的功能。本課程是專為使用VC 6控制一個ActiveX——Windows媒體播放器控件,建立自己的多媒體播放器。 該多媒體播放器打開該文件,播放,暫停,快進(jìn),全屏幕,調(diào)整音量,倒帶和其他基本的播放功能,可以播放:MP3,WMA ,*,*,*,*,MDI,WAV,AVI,*。視頻和音頻文件格式,如DAT。同時也使隱藏的播放列表,可以選擇播放,隨機順序、單周期隨機播放,在三個方面:將單周期隨機有打開的文件,播放,暫停,在播放模式下關(guān)閉,是個人的選擇項。 1.2 媒體格式簡介 1.2.1什么是WMF SDK    

15、 WMF SDK是微軟Windows Media技術(shù)的重要組成部分,它基于COM技術(shù),可以方便地開發(fā)具有高性能要求的多媒體應(yīng)用程序。對WMF SDK關(guān)鍵技術(shù)作了概括介紹,并給出了采用Visual C++編程語言開發(fā)視頻播放器的軟件實現(xiàn)過程。WMF SDK采用了面向?qū)ο蟮脑O(shè)計,是一套完全基于COM組件模型的高級開發(fā)包。它引入的生成器,讀取器,器等對象屏蔽了ASF數(shù)據(jù)格式、傳輸控制等較為底層的流媒體技術(shù)實現(xiàn)細(xì)節(jié),留下比較上層的編程接口給開發(fā)者使用。 1.2.2 WMF SDK體系結(jié)構(gòu) Windows Media Format SDK 具有許多處理 ASF 文件的功能,但其核心功能是讀寫文件。

16、  1.2.3 生成器結(jié)構(gòu) 使用Windows Media Format SDK構(gòu)建應(yīng)用程序?qū)⑸善髟唇橘|(zhì)樣品的傳遞。生成器設(shè)置指定的配置文件的目標(biāo)代碼的文件。配置文件定義的編碼格式的文件,包括每個流程的詳細(xì)信息和如何處理信息流。大多數(shù)的音頻和視頻流 的媒體編碼解碼器處理。然而,代碼首先與轉(zhuǎn)換器來處理數(shù)據(jù),準(zhǔn)備壓縮。當(dāng)樣品被放置在一個文件中,然后轉(zhuǎn)移到多路復(fù)用器,多路復(fù)用器根據(jù)介紹時間從所有流的行掃描采樣和數(shù)據(jù)包。比特流復(fù)用器的創(chuàng)建和發(fā)送到接收器,用于 治療的最終目的的I / O接收機,無論是在磁盤或互聯(lián)網(wǎng)或其他網(wǎng)絡(luò)播放的文件?! ? 1.2.4 讀取器結(jié)構(gòu) 讀取過程和數(shù)據(jù)寫入

17、過程基本相同,但順序是相反的。讀取器連接到源,源可以是一個文件,網(wǎng)絡(luò)連接或自定義源。分流處理文件的數(shù)據(jù)部分,數(shù)據(jù)被劃分成一個流的樣本,然后解壓縮的樣品(如果啟用DRM保護(hù)),并通過相應(yīng)的處理Windows媒體編碼解碼器。默認(rèn)情況下,讀取器會自動選擇合適的解碼解壓縮的ASF數(shù)據(jù)流。 1.2.5 WMF SDK編程開發(fā)環(huán)境配置   WMF的SDK是唯一適合的C / C + +編程語言,開發(fā)平臺可以在VC + + 6或Visual Studio .NET。本文vc6.0.open VC 6的設(shè)置方法,選擇菜單命令工具→選項,單擊“目錄,選擇包含文件顯示目錄中的下拉菜單,然后安裝路徑,在VC S

18、DK標(biāo)準(zhǔn)路徑。VC6.0工程應(yīng)用的開發(fā),調(diào)試版本還需要以下設(shè)置:選擇在項目設(shè)置菜單命令,輸入標(biāo)簽鏈接,一般選擇類別的下拉列表,winmm.lib和wmvcore.lib文件添加到對象/庫模塊忽略所有默認(rèn)庫并選擇。 2 軟件開發(fā)與設(shè)計 2.1設(shè)計思路 根據(jù)每個按鈕的控制功能和Windows媒體播放器控件的特點,首先要 cwmpcontrol在頭文件中。cwmpsettings對象,結(jié)合和定義,需要在程序的后面的調(diào)用類的成員函數(shù)。打開文件按鈕,調(diào)用的通用文件對話框類,并使用選定的文件到播放列表addstring列表功能,在MFC的研究。對一些基本功能的實

19、現(xiàn),如播放,暫停,音量,體積縮小,全屏幕,靜音,快進(jìn),快退等功能,一個成員函數(shù)的調(diào)用cwmpcontrol和cwmpplayer類實現(xiàn)。 打開? 讀取播放列表 播放 添加播放列表 設(shè)置文件過濾 初始化 開始 播放控制 播放列表的大小和方向,本設(shè)計使用SetWindowPos函數(shù)來改變一個窗口彈出,和一些對保存列表,刪除列表的實現(xiàn)相關(guān)的功能,刪除當(dāng)前的功能。播放列表,我還增加了播放模式選擇功能,提供玩,然后循環(huán)周期,單周期三個選擇的OnTimer函數(shù)和函數(shù)能夠控制播放模式的運用。根據(jù)上述思路設(shè)計,流程圖如圖2.1所示: N

20、 Y 播放模式 退出? N 圖2.1 流程圖 退出 Y 2.2.設(shè)計步驟 首先,打開Microsoft Visual Studio6.0軟件,新建一個工程如圖2-2所示, 圖2.2 工程建立 圖2.2 工程建立 以kejian為工程名,然后將此工程定義為基于對話框的MFC應(yīng)用程序

21、如圖2.3所示,點擊完成就成功建立了一個基于對話框的工程。 在建立好工程之后,首先是Windows Media Player控件的添加:建立空白對話框之后,在對話框的空白處單擊鼠標(biāo)右鍵,選擇Insert ActiveX Control菜 圖2.3 單項。選擇Windows Media Player控件。加入控件后,此時該控件與該對話框并沒有聯(lián)系,需要對其進(jìn)行變量的關(guān)聯(lián)。 添加完該控件之后可以發(fā)現(xiàn),該控件與右邊控件工具欄添加的控件的形式與功能完全不同,是一種更為高級的控件,將該控件名改為IDC_player,

22、如圖2.5所示。 圖2.6 Windows Media Player控件 雖然已已經(jīng)添加了該控件,但是可以發(fā)現(xiàn),改控件沒有與工程中的對話框發(fā)生任何聯(lián)系,所以需要對其進(jìn)行變量的關(guān)聯(lián),所屬類為Kejian類,變量類型為CWPPlayer4如圖2.7所示。 圖2.7 關(guān)聯(lián)變量 關(guān)聯(lián)變量之后,才算是真正的添加完了該控件,可以發(fā)現(xiàn)在關(guān)聯(lián)變量之后,控件工具欄多了Windows Media Player控件的選項,并且在Source Files中增加了17個類,相應(yīng)的頭

23、文件也增加了17個,如圖2.8所示。 圖2.8 添加控件后的變化 一類重要的cwmpplayer4,cwmpcontrols,cwmpmedia,cwmpplaylist,cwmpsettings五類。該cwmpplayer4類是呼叫的其他類型的主要對象以及基本的控制功能,提供與Windows媒體播放器控件交互的一種基本方法,其中的成員函數(shù)也可以從其他相關(guān)對象的情況下獲得的部分;cwmpcontrols主要是控制多個操作;類cwmpmedia主要是一些媒體文件資源;cwmpplaylist主要播放操作;cwmpsettings主要是一些基本的集合操作的媒體文件。為控制添加和內(nèi)部功能的認(rèn)識需

24、要更多的時間來完成這個熟悉的,添加關(guān)鍵控制后,接口設(shè)計。 2.3.1界面設(shè)計 首先是打開按鈕,用來打開此媒體文件。然后,播放,暫停,快進(jìn),快退,全屏,音量,體積減小,靜音,停止播放,退出按鈕。變量的相關(guān)性,于ID的修改在表2-1,表2-2所示: 表2-1 :控件ID以及關(guān)聯(lián)變量 控件Caption 按鈕ID 關(guān)聯(lián)變量類型 關(guān)聯(lián)變量名稱 WMPlayer IDC_player CWMPlayer4 m_ZhuangWenfeng 表2-2 控件ID以及對應(yīng)響應(yīng)函數(shù) 控件Caption 按鈕ID 消息響應(yīng)函數(shù) 打開 IDC_o

25、pen Onopen 播放 IDC_play Onplay 暫停 IDC_pause Onpause 全屏 IDC_fullscreen Onfullscreen 播放列表 IDC_list Onlist 列表框 IDC_LIST1 OnDblclkList1 快進(jìn) IDC_fastforward Onfastforward 快退 IDC_fastreverse Onfastreverse +(音量增加) IDC_addvol Onaddvol -(音量減小) IDC_decvol Ondecvol 靜音 IDC_mute Onmu

26、te 表2-3 控件ID以及對應(yīng)響應(yīng)函數(shù) 控件Caption 按鈕ID 消息響應(yīng)函數(shù) 停止 IDC_stop Onstop 保存列表 IDC_save Onsave 刪除列表 IDC_dellist Ondellist 刪除當(dāng)前 IDC_dellistcur Ondellistcur 退出 IDC_exit Onexit 關(guān)于 IDC_about Onabout 以上是關(guān)聯(lián)的對象對應(yīng)的控制,除了相應(yīng)的控制,也需要一些有17種Windows媒體播放器控件生成的類的對象被定義,和成員函數(shù)的定義,和一個對象的成員聲明放在頭文件中,本設(shè)計主要有3步

27、,因為設(shè)計出提醒彈出框,所 以他們會在它的定義,如表2-3所示 表2-4 其他類及對應(yīng)對象 類名 對象名 類名 對象名 CWMPControls m_Control CString m_PathName CWMPSettings m_Setting Check CCheck 除了各控制變量的函數(shù)和響應(yīng)消息,以及相關(guān)的對話框類的消息響應(yīng)函數(shù),因為播放模式選擇功能添加這樣的設(shè)計,因此需要使用wm_timer消息響應(yīng)函數(shù)和函數(shù)OnTimer()和()函數(shù)來實現(xiàn)這一功能,對話框的消息響應(yīng)程序書寫功能的相關(guān)性。添加的方法如圖2.9所示。 圖2.9添加WM_TIMER消息響

28、應(yīng)函數(shù) 圖2.10 多媒體播放器界面 最終得到各個空間分布后的界面如圖2.10所示。 圖2.10多媒體播放器interfacein除上述主對話框,我也在aboutbox進(jìn)行了重新設(shè)計,還做了一個檢查”對話框,在其中aboutbox如圖2.10所示。檢查對話框退出按鈕,彈出提醒窗口,當(dāng)用戶點擊,主要是用來防止用戶不小心按下關(guān)閉按鈕使程序關(guān)閉,這有利于用戶,加強友好的軟件,如圖2.11所示。 圖2.11 修改后的ABOUTBOX對話框 于菜單的制作,首先,需要在ResourceView中加入資源Menu,后增加對應(yīng)的菜單項以及菜

29、單自己布局,下拉菜單則需要和按鈕關(guān)聯(lián),其方法是將其ID和按鈕的ID一樣,菜單布局圖2.12所示。 圖 2.12 菜單欄 2.4關(guān)鍵功能的實現(xiàn) 對于各個函數(shù)的介紹,本文以關(guān)鍵代碼以及注釋的方式進(jìn)行介紹,首先介紹主對話框中函數(shù)的實現(xiàn)以及說明: (1)Onopen();打開函數(shù) void CKejianDlg::Onopen() { char szFileFilter[]= "All File(*.*)|*.*|" "AVI File(*.avi)|*.avi|" "Mp3 File(*.m

30、p3)|*.mp3|" "MPEG File(*.mpeg)|*.mpeg|" "Media File(*.asf)|*.asf|" "Video File(*.dat)|*.dat|" "MPGA File(*.mpga)|*.mpga|" "Wave File(*.wav)|*.wav|" "Movie File(*.mov)|*.mov|" "Mid File(*.mid;*,rmi)|*.mid;*.rmi|" "Wma File(*.wma)|*.wma|" "Rmvb File(*.rmvb)|*.rmvb|" "All File(*.*)|*.*|

31、|"; //可選的文件類型 CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT|OFN_NOCHANGEDIR,szFileFilter); //OFN_ALLOWMULTISELECT是允許選擇多個文件 OFN_NOCHANGEDIR是不改變當(dāng)前目錄 POSITION pos=dlg.GetStartPosition(); if(dlg.DoModal()==IDOK) {while(pos!=NULL) { m_pathname=dlg.GetNextPathNam

32、e(pos);//得到完整的文件名,包括目錄名和擴展名 m_list.AddString(m_pathname);//增加到播放列表 } } } 問題是理解的奇怪的功能,因為大量的類,并且每個成員函數(shù)是不同的,更難以使用。除了常見的文件對話框和更熟悉的,其他的功能通常是不可見的。通過增加播放目錄的路徑名主要取決于getnextpathname()函數(shù),該m_list.addstring()函數(shù)是添加到播放列表中的項目名稱 (2)Onlist();播放列表按鈕函數(shù)和OnDblclkList1();播放列表函數(shù): void CKejianDlg::Onlis

33、t() { flag=!flag; if(!flag) { SetWindowPos(NULL,0,0,400,430,SWP_NOMOVE);//播放列表初始位置狀態(tài) } else { SetWindowPos(NULL,0,0,590,430,SWP_NOMOVE);//點擊按鈕后播放列表位置狀態(tài) } } 播放按鈕設(shè)計功能是運行軟件播放器播放的是隱藏的,當(dāng)你點擊按鈕,彈出的列表。為了實現(xiàn)這個功能,我會一起播放列表和播放表按鈕。為此,該程序定義了一個全局變量的圖標(biāo),把它作為一個標(biāo)志,在初始化定義窗口無相對位移,當(dāng)你點擊按鈕,位移的

34、窗口,它會達(dá)到隱藏和功能的播放列表。但對播放列表,它需要實現(xiàn)雙播放功能,所以加上控制列表消息映射,并選擇雙擊消息響應(yīng)函數(shù),如圖2,13所示。該項目也加入了執(zhí)行響應(yīng)函數(shù)()函數(shù),當(dāng)你點擊功能開始創(chuàng) 建一個計數(shù)器,從而實現(xiàn)播放模式功能。 圖13 播放列表消息影像函數(shù)設(shè)置 CKejianDlg 具體程序如下所示: void CKejianDlg::OnDblclkList1();//雙擊播放函數(shù) { CString str int index=m_list.GetCurSel();//獲取選擇的行數(shù)

35、 m_list.GetText(index,str); m_CKejianDlg.SetUrl(str);//播放 m_pathname=str; SetTimer(1,1000,NULL); //在點擊播放時就創(chuàng)建計時器 每隔1秒就自動執(zhí)行下響應(yīng)函數(shù)ontimer() } (3)Onplay();播放函數(shù)及其他多媒體播放控制按鈕 void CKejianDlg::Onplay() { m_Control.play(); //暫停后繼續(xù)播放} 如同播放函數(shù)所示,其他控制播放狀態(tài)的函數(shù)都可以直接調(diào)用添加的控件的類的對象調(diào)用實

36、現(xiàn),按鈕響應(yīng)函數(shù)和調(diào)用的函數(shù)關(guān)系如表2-5所示。 表2-5響應(yīng)函數(shù)和調(diào)用函數(shù)關(guān)系 響應(yīng)函數(shù) 調(diào)用函數(shù) 響應(yīng)函數(shù) 調(diào)用函數(shù) Onfastre6verse() m_Control.fastReverse() Onfulscreen() m_Kejian.SetFullScreen(1) Onfastforward() m_Control.fastForward() Onmute() m_Setting.SetVolume(m_Setting.GetMute()); Onstop() m_Control.stop() Onaddvol() m_Settin

37、g.SetVolume(m_Setting.GetVolume()+10) Onpause() m_Control.pause() Ondecvol() m_Setting.SetVolume(m_Setting.GetVolume()-10 (4)播放列表狀態(tài) 這款播放器設(shè)計了保存播放列表、刪除播放列表、刪除當(dāng)前三種對播放列表狀態(tài)的控制,其中函數(shù)主要調(diào)用了m_list類中的函數(shù),在初始化是加入了一個讀取上次保存的播放列表的指針函數(shù),增加了播放列表的人性化。具體函數(shù)如下: void CkejianDlg::Onsave() {CStdioFile file; fil

38、e.Open(".\\list.txt",CFile::modeCreate|CFile::modeReadWrite|CFile::typeText);//打開指定文件 for(int i=0;i

39、esetContent();//刪除列表 file.Open(".\\list.txt",CFile::modeCreate); } void CkejianDlg::Ondellistcur() {m_list.DeleteString(m_list.GetCurSel());//刪除當(dāng)前光標(biāo)所選擇的行 Onsave();//自動保存刪除某一行后的播放列表 } (5)播放模式 播放模式選擇需要使用wm_timer消息,如圖14所示,并及時調(diào)用SetTimer()和()函數(shù)OnTimer。初始化順序播放默認(rèn)設(shè)置,當(dāng)你雙擊發(fā)揮開始創(chuàng)建一個計數(shù)器,每一次執(zhí)行以下的OnTim

40、er函數(shù)。OnTimer函數(shù)將播放狀態(tài),如果當(dāng)前播放完畢,在單選按鈕的檢測,以便選擇程序。如果比賽 圖2.14 M_TIMER消息添加 順序,將自動執(zhí)行下一個項目;如果是在0 -列表播放,產(chǎn)生隨機數(shù)的文件數(shù),然后執(zhí)行;如果是一首循環(huán),然后一直執(zhí)行當(dāng)前文件。 初始化程序如下: m_list.SetCurSel(0);//選擇第一行 m_list.GetText(m_list.GetCurSel(),m_pathname); ((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(true); //默認(rèn)播放模式為順序播放

41、 計數(shù)器函數(shù)OnTimer程序如下: void CKejianDlg::OnTimer(UINT nIDEvent) { int index=m_KejianDlg.GetPlayState();//獲取播放狀態(tài) if(index==1)//如果播放完成 { if(((CButton *)GetDlgItem(IDC_RADIO1))->GetCheck())//如果是順序播放 { CString str; int index=m_list.GetCurSel()+1; if(index>=m_list.GetCount()) index=0;

42、 //如果播放完最后一曲就自動播放第一首 m_list.GetText(index,str); m_kejian.SetUrl(str); m_list.SetCurSel(index);//自動置光標(biāo) }//這樣就實現(xiàn)了順序播放 if(((CButton *)GetDlgItem(IDC_RADIO2))->GetCheck())//隨機播放 { srand(time(0));//目的在于每次都能產(chǎn)生不同的隨機數(shù)序列 m_list.SetCurSel(rand()%m_list.GetCount()); //隨機選擇0-m_list.G

43、etCount()-1的任意一個數(shù)即隨即選擇m_list里的文件 m_list.GetText(m_list.GetCurSel(),m_pathname); m_kejian.SetUrl(m_pathname); } if(((CButton *)GetDlgItem(IDC_RADIO3))->GetCheck())//單曲循環(huán) { m_list.GetText(m_list.GetCurSel(),m_pathname); m_kejian.SetUrl(m_pathname); } } CDialog::OnTimer(nIDEvent)

44、; } (6)Onabout()和Onexit()函數(shù) 因為調(diào)用自身編輯的對話框并且修改了工程中的ABOUTBOX資源,所以也要對其進(jìn)行一定的修改。首先,是對Onabout()函數(shù)的修改: void Ckejian::Onabout() { CAboutDlg aboutDlg; aboutDlg.DoModal(); } 其次,在onexit()函數(shù)的重載。添加對話框,制作簡單沒有介紹,這是介紹添加對話框和相應(yīng)的類和添加的頭文件。 制定一個好的對話框,對話框的使用ClassWizard對話框類的關(guān)聯(lián),作為一個調(diào)用的結(jié)果,因此建立對象的對話框框

45、,如圖2.15中所示。 圖2.15 選擇創(chuàng)建一個新的類,你需要在輸入并輸入一個名稱,將添加一個對應(yīng)的check.cpp和檢查。在項目文件視圖文件是確定的,那么你可以在自制的對話框類和對象。所謂的對話框如下圖所示,和刪除在完成退出計數(shù)器,釋放內(nèi)存。 void CKejianDlg::Onexit() { CCheck Check; //生成CCheckBox類的對象CheckBox if(Check.DoModal()==IDOK) //彈出對應(yīng)的模態(tài)對話框 { CDialog::OnCancel(); //點擊確定則退出 KillT

46、imer(1);//退出程序時刪除計數(shù)器 } } (7)的菜單欄添加生產(chǎn)函數(shù) 做一個菜單欄添加只要到對話框中相應(yīng)的,本文不再。每個菜單項的功能,只要菜單項進(jìn)入相應(yīng)的功能按鈕控制相應(yīng)的ID相同,可以方便快速地調(diào)用。 3 系統(tǒng)測試 3.1測試目的 根據(jù)用戶需求,設(shè)計,概要設(shè)計和詳細(xì)設(shè)計測試用例,測試軟件系統(tǒng)。其目的是: 1:測試是為了發(fā)現(xiàn)錯誤的程序,程序的執(zhí)行過程。 2:好的測試方案是可能發(fā)現(xiàn)的錯誤的測試計劃到目前為止還沒有被發(fā)現(xiàn)。 3:成功的測試是發(fā)現(xiàn)到目前為止被發(fā)現(xiàn)的錯誤的測試。 3.2測試環(huán)境 Visualc++6.0操作系統(tǒng)Windows xp

47、。測試重點是系統(tǒng)后臺基本功能模塊。 3.3調(diào)試報告 有在設(shè)計過程中的許多錯誤,錯誤的搜索使用VC++ 6編譯,根據(jù)錯誤,改正錯誤。在這一點錯誤不重復(fù),有沒有相應(yīng)的頭文件,在一個小錯誤,正確的變量名稱不明確,容易修改,將在下面描述,程序的調(diào)試和誤差修正方法 (1)問題一 在播放列表的設(shè)計時,單擊“播放列表成員沒有播放的文件已被修改,代碼沒有改變,所以,經(jīng)過一段時間的一個按鈕,而不是雙發(fā)揮的功能如圖3.1所示。 圖3.1 調(diào)試結(jié)果1 最終在在線數(shù)據(jù)獲取的問題的解決方案:雙播放功能,在播放列表中添加一個雙擊消息映射函數(shù)的實現(xiàn),然后ondbl

48、clklist1()的代碼,從而實現(xiàn)雙播放功能。 (2)問題二 圖3.2類綁定 此段程序在OnInitDialog()函數(shù)中,連接編譯都未報錯,但是播放、暫停等多個按鈕控件無法工作。后考慮到其他類都進(jìn)行了的類的綁定,所以也要對CWMPControls類進(jìn)行綁定,其中static_cast相當(dāng)于將某一對象和賦值符號右邊的值進(jìn)行綁定,由于是靜態(tài)綁定,故綁定后不再改變,而后續(xù)程序中出現(xiàn)的m_Control對象卻并未出現(xiàn)對應(yīng)的綁定,如圖3.2所示。添加代碼: m_Control = static_cast(m_WMPlayer.GetCurrentCon

49、trol());之后,后續(xù)的控件的操作可以正常進(jìn)行了。 (3)問題三 alog()函數(shù),編譯器將不會連接錯誤,但播放,暫停等多個按鈕控件將不工作。在其他類的賬戶是類綁定,所以也被結(jié)合在static_cast cwmpcontrols,相當(dāng)于一個對象,指定一個符號在綁定的值的右側(cè),是靜態(tài)綁定,綁定不改變,并在隨后的程序m_control對象的出現(xiàn)是不受約束的相應(yīng)的。添加代碼: m_control = static_cast<cwmpplaylist >(m_wmplayer.getcurrentcontrol()); 在那之后,操作的控制可以是正常的。 (4)停止按鈕開始編程,直接調(diào)用

50、m_control.stop功能,如圖3.3所示,但當(dāng)調(diào)試時,請單擊“停止”按鈕,玩家停止然后繼續(xù)播放下一首歌。經(jīng)過分析,它是計數(shù)功能的問題,由于游戲模式功能外,當(dāng)停止時,計數(shù)器不停止工作,應(yīng)對本輪繼續(xù)播放功能的執(zhí)行,所以后來添加刪除計數(shù)器代碼:killtimer(1),如圖所示。 Void CKejianDlg::Onstop() { M_control.stop();//停止函數(shù) } Void CKejianDlg::Onstop() { M_control.stop();//停止函數(shù) Killtime(1);刪除計數(shù)器 } 圖3.4修

51、改后的代碼 圖3.3 原來的代碼 圖3.4所示問題解決 (5)問題四 在退出按鈕設(shè)計的四個問題是設(shè)計一個退出提醒功能,以防止用戶不小心使用時的錯誤和錯誤的退出程序,開始更正了這一點,然后讓學(xué)生得到答案,然后添加另一個對話框,然后創(chuàng)建一個新的類別,增加在頭文件#包括“檢查”,然后進(jìn)行編程,以實現(xiàn)特定的功能,如圖3.5所示。 圖3.5 3.4 測試結(jié)果 圖3.6 剛運行時隱藏播放列表 圖3.7 關(guān)于對話框

52、 圖3.8 菜單功能 28 結(jié) 論 從程序運行調(diào)試的結(jié)果來看,設(shè)計基本成功。 經(jīng)過這次課程設(shè)計,讓我對于MFC編程的方法有了更新更全面的認(rèn)識和深入的了解,對VC++的運用更是熟練了很多,而且有了系統(tǒng)地設(shè)計軟件的概念,這對我以后的軟件開發(fā)打下了很好的基礎(chǔ)。但是畢竟只是一個人開發(fā),且時間有限,技術(shù)知識不夠,當(dāng)然不能跟主流的媒體播放器(比如國內(nèi)的迅雷播放器,暴風(fēng)影音等)相比,本軟件還可以繼續(xù)開發(fā),比如實現(xiàn)屏幕大小的任

53、意調(diào)節(jié)等。 在所給的論文設(shè)計中,多媒體播放器的設(shè)計最能吸引我。我想,對于設(shè)計這個平時用得最多的軟件,應(yīng)該不難吧。然而事實往往出人意料,著手開始設(shè)計程序流程圖,我才發(fā)現(xiàn)去年學(xué)的C++語言知識所剩無幾,很多操作都不能熟練完成,只能找到以前的課本和相關(guān)資料再學(xué)習(xí)?;藘商斓墓Ψ虿虐奄Y料基本看完,導(dǎo)致設(shè)計流程圖的時間大大減少,沒有設(shè)計出比較好的流程圖,這對后續(xù)的程序編輯帶來了一定的困難。由此,我深刻地體會到,在編程之前,畫程序流程圖具有不可取代的重要性。 在更改過的流程圖基礎(chǔ)上,我對自己所設(shè)定的功能進(jìn)行編程,提交程序時,由于我通過調(diào)節(jié)滑塊控制音量并在一個編輯框中同步顯示音量大小,謝老師問我如何實現(xiàn)

54、在編輯框中輸入數(shù)值反過來改變音量,我當(dāng)時沒能正確回答,老師提示我用GetPos相反的函數(shù)實現(xiàn)該功能。聽取老師意見后,我采用SetPos函數(shù)成功實現(xiàn)該功能。其實這兩個函數(shù)都屬于一個類的成員函數(shù),但我只懂其一,說明自己看參考資料時不細(xì)心,遺漏了某些重要知識,以后需要多多注意。 總而言之,這次課程設(shè)計讓我學(xué)會了很多,發(fā)現(xiàn)了自己的不足,加深了對提出問題-分析問題-解決問題這一思維方式的運用,鍛煉了自己的邏輯思維和編程能力,為以后工作學(xué)習(xí)打下了較好的基礎(chǔ)。 致 謝 在該次論文設(shè)計的過程中,感謝老師的指導(dǎo)以及同學(xué)之間的幫助,在很多不明白的方面比如執(zhí)行 link.ex

55、e 時出錯,給于了充分的幫助。在此次論文的制作過程中,遇到了大量的問題這使我明白了自己的很多不足之處,在學(xué)術(shù)上是永無止境的,所以我還是要更加努力的前進(jìn)去壯大和充實自己,同時也使我深深的意識到不管自己是否察覺,身邊都會有很多人在幫助自己。 還要感謝和我的幾位同學(xué),和同事莊文峰,是你們在我平時設(shè)計中和我一起探討問題,并指出我設(shè)計上的誤區(qū),使我能及時的發(fā)現(xiàn)問題把設(shè)計順利的進(jìn)行下去,沒有你們的幫助我不可能這樣順利地結(jié)稿,在此表示深深的謝意。 參 考 文 獻(xiàn) [1] 《Visual C + + 多媒體開發(fā)指南》. 李博軒. 清華大學(xué)出版社, 2000. [2]《深入

56、解析MFC》. GEORGE SHEPHERDSCOT WINGO著, 趙劍云,卿瑾譯. 北京:中國電力出版社,2003. [3]《Visual C + +編程技巧精選500例》. 羅斌.中國水利水電出版社,2004. [4]《Visual C + +6.0數(shù)據(jù)開發(fā)實例》.姚予疆. 人民郵電出版社2001. [5] [6] <<基于svc++的多媒體設(shè)計與應(yīng)用>>百度文庫. [7]《Visual C++.NET多媒體編程[M]》.周長發(fā).電子工業(yè)出版社.2002. [8]《面向?qū)ο蟪绦蛟O(shè)計與VC++實踐[M]》.揣錦華.西安電子科技大學(xué)出版社.2005. [9]《Visual C++教程[M]》.鄭阿奇.北京:機械工業(yè)出版社.2004. [10]《流媒體寶典》.Steve Mack.電子工業(yè)出版社.2003.

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!