多媒體播放器論文_第1頁
多媒體播放器論文_第2頁
多媒體播放器論文_第3頁
多媒體播放器論文_第4頁
多媒體播放器論文_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

用VisualStudio設計的多媒體播放器摘要本課程設計的目的是制作一個可播放目前主流媒體格式的多媒體播放器,其基本功能應具有媒體播放、音量調(diào)節(jié)、播放進度選擇、暫停、停止以及歌曲信息的查詢與添加等,使之成為一款簡易的媒體播放設備,能夠完美的播放市面上大多數(shù)的音頻、視頻文件。在課程設計中,系統(tǒng)開發(fā)平臺為WindowsXPProfessionalSP2,程序設計環(huán)境采用VisualC++6.0。在程序設計中,我利用了Microsoft公司開發(fā)的ActiveX控件一一可視動畫控件ActiveMovie,程序通過調(diào)試運行,初步實現(xiàn)了設計目標,并且經(jīng)過適當完善及美化后,將可以成為一款精簡實用的多媒體播放軟件。該播放器是基于MFC集成開發(fā)環(huán)境,利用ActiveMovie控件實現(xiàn)媒體播放的功能,除了基本的播放控制外,還具有多文件自動順序循環(huán)播放、全屏播放、靜音等實用功能。關鍵詞程序設計;ActiveMovie控件;多媒體;播放器目錄TOC\o"1-5"\h\z\o"CurrentDocument"1.弓I言1\o"CurrentDocument"1.1系統(tǒng)的設計目標和系統(tǒng)的意義1\o"CurrentDocument"1.2多媒體播放器將達到的效果2\o"CurrentDocument"1.3軟件的開發(fā)設計思想2\o"CurrentDocument"1.4開發(fā)工具的介紹3\o"CurrentDocument"1.5可行性分析和需求分析3\o"CurrentDocument"2軟件的需求分析和模塊設計4\o"CurrentDocument"2.1軟件的需求分析4\o"CurrentDocument"2.2軟件的模塊設計43.數(shù)據(jù)庫設計5\o"CurrentDocument"3.1數(shù)據(jù)需求分析5\o"CurrentDocument"3.2數(shù)據(jù)庫概念結(jié)構(gòu)設計.5\o"CurrentDocument"3.3數(shù)據(jù)庫邏輯結(jié)構(gòu)設計6\o"CurrentDocument"3.4數(shù)據(jù)庫結(jié)構(gòu)的實現(xiàn)7\o"CurrentDocument"4多媒體播放器軟件設計7\o"CurrentDocument"4.1模塊實現(xiàn)函數(shù)說明7\o"CurrentDocument"4.2主要變量聲明84.3設計多媒體播放器界面94.4播放器模塊設計9\o"CurrentDocument"4.5功能模塊設計10\o"CurrentDocument"4.6歌曲信息模塊的設計13\o"CurrentDocument"5程序?qū)崿F(xiàn)結(jié)果17\o"CurrentDocument"5.1程序運行流程圖17\o"CurrentDocument"5.2播放器實現(xiàn)結(jié)果演示18\o"CurrentDocument"結(jié)束語23考文獻24附錄:源程序清單1引言隨著多媒體硬件環(huán)境和軟件環(huán)境的不斷完善,多媒體在人類文化生活中扮演的角色越來越重要。就目前而言,多媒體技術已在商業(yè)教育培訓、電視會議、聲像演示等方面得到了充分應用。利用多媒體技術可為各類咨詢提供服務,如旅游、郵電、交通、商業(yè)、金融、賓館等,多媒體技術還將改變未來的家庭生活,尤其是在大部分計算機軟件開發(fā)中都涉及多媒體軟件技術的應用。簡單說,多媒體(Multimedia)就是多種媒體的結(jié)合和使用。這些媒體可以是圖形、圖形、聲音、文字、視頻、動畫等表現(xiàn)形式,也可以使顯示器、揚聲器、電視機等信息的展示設備以及傳輸信息的光纖、光纜、電磁波等介質(zhì),還可以是存儲信息的磁帶、光盤、磁盤等存儲設備。這些媒體的直接結(jié)合、綜合使用,就構(gòu)成多媒體。確切的定義是,多媒體是一種能夠讓用戶以交互方式將文本、圖像、圖形、音頻、動畫、視頻等多種信息,經(jīng)過計算機的軟硬件設備獲取、操作、編輯、存儲等處理過程后,以單獨的或合成的形態(tài)表現(xiàn)出來的技術和方法。多媒體播放器就是匯集了多媒體方面的多種技術,使多媒體實現(xiàn)化的一種軟件。1.1系統(tǒng)的設計目標和系統(tǒng)的意義這個課程設計的目的就是制作一個能夠播放音頻、視頻文件的播放器,并使它具備一些簡單的操作處理功能,如播放暫停的控制,音量的調(diào)節(jié),多文件自動循環(huán)等等。將這個小型播放軟件做得盡量的小巧、實用。多媒體技術是當今信息技術領域發(fā)展最快、最活躍的技術,是新一代電子技術發(fā)展和競爭的焦點。多媒體技術融計算機、聲音、文本、圖像、動畫、視頻和通信等多種功能于一體,借助日益普及的高速信息網(wǎng),可實現(xiàn)計算機的全球聯(lián)網(wǎng)和信息資源共享,因此被廣泛應用在咨詢服務、圖書、教育、通信、軍事、金融、醫(yī)療等諸多行業(yè),并正潛移默化地改變著我們生活的面貌。多媒體技術已經(jīng)成為當今比較熱門的研究課題,特別是伴隨著多媒體技術的網(wǎng)絡化,使得多媒體技術的發(fā)展前景無限廣闊,因此掌握多媒體及多媒體技術的相關知識,了解多媒體技術當前的發(fā)展狀況及未來的發(fā)展前景,并能熟練地進行多媒體技術的開發(fā),對于當前即將畢業(yè)的大學生來講,是很有發(fā)展前途的?;诖?,我選擇了此課題一一多媒體播放器的設計與實現(xiàn),期望通過對此課題的研究與開發(fā),能深入了解多媒體技術,特別是掌握多媒體技術在媒體播放器中的應用。1.2多媒體播放器將達到的效果本課程設計的目的是制作一個可播放目前主流媒體格式的多媒體播放器,其基本功能應具有媒體播放、音量調(diào)節(jié)、播放進度選擇、暫停、停止以及歌曲信息的查詢與添加等,使之成為一款簡易的媒體播放設備,能夠完美的播放市面上大多數(shù)的音頻、視頻文件。1.3軟件的開發(fā)設計思想本系統(tǒng)開發(fā)設計思想:?盡量利用人們現(xiàn)有的軟件環(huán)境,采用簡單快捷的設計方案,從而達到使用方便,容易操作的目的;?此播放器可以滿足大多數(shù)人日常使用的需要,并達到操作過程的直觀、方便、實用、安全等要求;?軟件采用模塊化程序設計方法,既便于軟件功能的各種組合和修改,又便于技術維護人員進行補充、維護。1.4開發(fā)工具的介紹?系統(tǒng)開發(fā)環(huán)境操作系統(tǒng):WindowsXPProfessional簡體中文版開發(fā)平臺:VisualC++6.0簡體中文版?開發(fā)平臺介紹VisualC++6.0。它是微軟公司推出的開發(fā)Win32應用程序(Windows95/98/2000/XP/NT),面向?qū)ο蟮目梢暬晒ぞ?。它的最大?yōu)點就是提供了功能強大的MFC類庫,MFC是一個很大的C++類層次結(jié)構(gòu),其中封裝了大量的類及其函數(shù),很多Windows程序所共有的標準內(nèi)容可以由MFC的類來提供,MFC類為這些內(nèi)容提供了用戶接口的標準實現(xiàn)方法,程序員所要做的就是通過預定義的接口把具體應用程序特有的東西填入這個輪廓,這將簡化編程工作,大大的減少程序員編寫的代碼數(shù)量,使編程工作變得更加輕松容易。之所以選擇VisualC++作為開發(fā)工具,不僅僅因為曾經(jīng)有過使用它的經(jīng)驗,看中的更是它的功能強大和使用方便。它本身不僅具有極其強大的編程能力,它允許選擇和管理外接程序,并內(nèi)含多種實用控件,這些對VisualC++的擴充又進一步增強了它的開發(fā)環(huán)境的能力。1.5可行性分析和需求分析?經(jīng)濟可行性由于該軟件屬于個人開發(fā),無需過大的資金投入.所以經(jīng)濟上是可行的。?技術可行性VC++6.0中文版作為一個關系型數(shù)據(jù)庫系統(tǒng),它提供了面向?qū)ο蟮木幊碳夹g,可簡化數(shù)據(jù)庫管理,使開發(fā)應用程序這艱辛的工作就象堆木那樣簡單方便.另外,VC++6.0中文版開發(fā)的應用程序可以獨立運行于WINDOWS平臺.VC++6.0中文版,它是運行于Windows95/98和WindowXP平臺32位數(shù)據(jù)庫系統(tǒng),充分發(fā)揮了32位微處理器強大的32位數(shù)據(jù)處理性能.它功能強大,直觀易用,支持客戶/服務器結(jié)構(gòu)和面向?qū)ο缶幊?,提供多種可視化編程工具,支持最新Internet技術,WWW數(shù)據(jù)庫的設計,最新流行的ActiveX等。VC++6.0中文版完全支持OOP(面向?qū)ο螅┑膽贸绦蛟O計方法,VC++6.0使用了真正的類,包括繼承性,封裝性和多態(tài)性,用可視方式創(chuàng)建類,查看類及類代碼;利用表單向?qū)нM行專業(yè)級界面設計;對表關系進行可視化查看;可利用OLE自動化來包含其他軟件(如Excel,word)中的對象并使用這些軟件。通過VC++6.0對象和事件模型,用戶可以快速創(chuàng)建和實現(xiàn)無模式(Modeless)的應用程序;利用生成器和工具欄,開發(fā)人員可以快速開發(fā)應用程序,而省去編寫大量的代碼、定義繁多的屬性??傊?,VC++6.0中文版是一種適用于專業(yè)人員的開發(fā)工具。?人員可行性我目前時間充足,可以完成開發(fā)任務。而且C++語言和算法的功底還行,可以參與系統(tǒng)的算法設計與開發(fā)。我都有有深厚的文字功底,可以參與用戶文檔的制作、內(nèi)部文檔整理、后期測試等任務。2軟件的需求分析和模塊設計2.1軟件的需求分析當今互聯(lián)網(wǎng)上已經(jīng)有許多種類繁多的媒體播放器,而且都已經(jīng)制作的相當完善。一般軟件都支持大多數(shù)的主流媒體格式,具有十分友好的界面,強大的功能,甚至有些播放器軟件(如國產(chǎn)軟件“暴風影音”)甚至可以支持外部插件。但是強大繁多的功能,漂亮的界面帶來的副作用就是內(nèi)存占用量的正比上升。而我開發(fā)制作這款播放器的意圖便是利用最小的內(nèi)存和系統(tǒng)資源進行最基本的視聽需要,讓我們在享受視覺和聽覺的美好享受時不用以大量的系統(tǒng)資源占用為代價。本程序要求實現(xiàn)的基本功能是實現(xiàn)音/視頻的播放,要求主要的控制功能是播放、暫停、聲音的大小控制、播放的拖放等功能。根據(jù)這些要求應該有相應的軟硬件支持才能獲得實現(xiàn)??尚行苑矫?,我的計算機有聲卡和集成顯卡,使用的操作系統(tǒng)為微軟的WindowsXP,同時也安裝了VisualC++6.0中文版。這個多媒體播放器基本上對軟硬件沒有太高的要求,在我目前的機器配置下足夠?qū)崿F(xiàn)它的全部功能。2.2軟件的模塊設計該播放器程序共分8個模塊,結(jié)合ActiveMovie控件可以實現(xiàn)預期的所有功能。程序的功能模塊圖如圖1:多媒體播放器播放模塊暫停模塊停止模塊全屏模塊音量模播放模塊暫停模塊停止模塊全屏模塊音量模塊循環(huán)模塊其中,添加模塊用于打開媒體文件并添加到播放列表;關閉模塊用于結(jié)束循環(huán)并關閉播放器;播放模塊用于設置定時器開始播放;暫停模塊用于暫停播放;停止模塊用于結(jié)束循環(huán)并停止播放;全屏模塊用于全屏化播放視頻文件;音量模塊包含三個函數(shù),分別用于增大音量、降低音量、靜音;循環(huán)模塊包含兩個函數(shù),分別用于顯示播放模式是否為循環(huán)、實現(xiàn)順序循環(huán)播放列表中的文件。3數(shù)據(jù)模型分析與設計3.1數(shù)據(jù)需求分析通過對多媒體播放器的功能和數(shù)據(jù)流程分析,設計的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)如下:?多媒體靜態(tài)數(shù)據(jù):主要是包括界面的設置,控鍵等等。?多媒體動態(tài)數(shù)據(jù):解碼信息流、聲音流、圖象流等。?歌曲的基本信息:包括的數(shù)據(jù)庫項有歌曲名稱、歌手姓名、作詞、作曲,所屬專輯名稱,發(fā)行年月等。因為本程序中只涉及到歌曲的基本信息,為了簡單說明,在數(shù)據(jù)庫中只包含了與歌曲有直接關系的數(shù)據(jù)項。3.2數(shù)據(jù)庫概念結(jié)構(gòu)設計?多媒體播放模塊,其數(shù)據(jù)流圖如下:圖2媒體播放數(shù)據(jù)流圖?歌曲信息的設計規(guī)劃出的實體有:歌曲信息實體、歌手實體、作詞實體、作曲實體、專輯名稱實體。實體和實體之間的關系E-R圖如圖3所示:

圖3實體之間的關系E-R圖3.3數(shù)據(jù)庫邏輯結(jié)構(gòu)設計為數(shù)據(jù)庫歌曲信息表添加如下數(shù)據(jù)表:旨歌曲信息:數(shù)據(jù)庫(Access2000文件格式)又,通打開迫)叱設計但)'3新建圖3實體之間的關系E-R圖3.3數(shù)據(jù)庫邏輯結(jié)構(gòu)設計為數(shù)據(jù)庫歌曲信息表添加如下數(shù)據(jù)表:旨歌曲信息:數(shù)據(jù)庫(Access2000文件格式)又,通打開迫)叱設計但)'3新建?IXI%4圖ffit時蒙同表1310杳報頁宏詢體表組aaja巍便用設計器創(chuàng)建表便用向?qū)?chuàng)建表通過輸入數(shù)據(jù)創(chuàng)建表歌曲信息B歌曲信息:表自交字段名稱I數(shù)據(jù)類型「歌曲名稱圖5信息詳情表結(jié)構(gòu)自交創(chuàng)建數(shù)據(jù)源為數(shù)據(jù)庫創(chuàng)建用戶DSN,數(shù)據(jù)源名稱為”歌曲信息”如下:圖6創(chuàng)建數(shù)據(jù)源3.4數(shù)據(jù)庫結(jié)構(gòu)的實現(xiàn)在需求分析、概念結(jié)構(gòu)設計的繼承上得數(shù)據(jù)庫的邏輯結(jié)構(gòu)之后,我們就可以在VC++6.0數(shù)據(jù)庫系統(tǒng)中實現(xiàn)該邏輯結(jié)構(gòu)。數(shù)據(jù)庫的邏輯結(jié)構(gòu),直接使用VC++6.0的項目管理器來實現(xiàn),在這之前,先建一個名為songinformation的項目,保存在磁盤。如D:\songinformation。存儲為D:\songinformation\database\歌曲信息.dbc。為數(shù)據(jù)庫添加數(shù)據(jù)表,存儲為D:\songinformation\database\歌曲信息.dbf.4多媒體播放器軟件設計4.1模塊實現(xiàn)函數(shù)說明這些實現(xiàn)模塊功能的具體函數(shù)均屬于CMediaPlayerDlg類,它是在建立MediaPlayer工程時由MFC建立的一個對話框的類,在該對話框上進行的操作函數(shù)即可實現(xiàn)程序所需要的所有功能,其實現(xiàn)函數(shù)則是調(diào)用ActiveMovie控件的相關函數(shù),從而完成各項具體功能。各個模塊的具體實現(xiàn)函數(shù)描述見下表1所示:表1模塊函數(shù)列表模塊名稱實現(xiàn)函數(shù)添加模塊voidCMediaPlayerDlg::OnOpen()關閉模塊voidCMediaPlayerDlg::OnClose()播放模塊voidCMediaPlayerDlg::OnPlay()暫停模塊voidCMediaPlayerDlg::OnPause()停止模塊voidCMediaPlayerDlg::OnStop()全屏模塊voidCMediaPlayerDlg::OnFulscreeen()

音量模塊voidCMediaPlayerDlg::OnLower()voidCMediaPlayerDlg::OnUpper()voidCMediaPlayerDlg::OnMute()循環(huán)模塊voidCMediaPlayerDlg::OnRepeat()voidCMediaPlayerDlg::OnTimer()查詢模塊voidCMediaPlayerDlg::OnChaxun()添加模塊voidCMediaPlayerDlg::OnTianjia()4.2主要變量聲明程序中用到的主要控件有:1個ActiveMovieControl、1個列表框、12個按鈕。各個控件變量的聲明參見下表2:表2變量聲明列表控件名稱變量類型變量名說明IDC_LIST1CListBoxm_list播放列表IDC_ACTIVEMOVIECONTROL1CActiveMovie3m_ActiveMovie可視動畫控件IDC_OPENCButtonm_Open打開、添加文件IDC_STOPCButtonm_Stop停止播放IDC_CLOSECButtonm_Close關閉當前播放IDC_LOWERCButtonm_Lower降低音量IDC_PLAYCButtonm_Play循環(huán)播放IDC_PAUSECButtonm_Pause暫停IDCANCELCButtonm_Exit退出IDC_UPPERCButtonm_Upper增大音量IDC_FULSCREEENCButtonm_FullScreen全屏IDC_REPEATCButtonm_Repeat循環(huán)控制IDC_EDIT1CStringm_Edit1查詢編輯框IDC_GEQUCStringm_Gequ歌曲名稱編輯框IDC_GESHOUCStringm_Geshou歌手編輯框IDC_ZUOCICStringm_Zuoci作詞編輯框IDC_ZUOQUCStringm_Zuoqu作曲編輯框IDC_ZHUANJICStringm_Zhuanji專輯名稱編輯框4.3設計多媒體播放器界面播放器的主界面設計如圖7:圖7主界面在主界面添加控件,為控件添加成員變量與控件變量并邦定。4.4播放器模塊設計為界面添加ActiveMovieControlObject控件,以及打開、關閉、播放、暫停、停止、全屏、循環(huán)等按鈕控件,ActiveMovieControlObject控件的添加過程如圖8所示:圖8添加ActiveMovieControlObject控件ActiveMovie關鍵函數(shù)說明可視動畫控件ActiveMovieControlObject是Microsoft公司開發(fā)的ActiveX控件,為程序員提供了在該層次上控制媒體設備接口的能力。它包含一組高層次的獨立于設備的命令,可以控制音頻和視頻外設,我們不必關心具體的設備便可以對CD、視盤機、波形音頻設備、視頻播放設備和MIDI設備等媒體設備進行控制,也可以理解成設備面板上的一排按鍵,通過選擇不同的按鍵(發(fā)送不同的命令)即可讓設備完成各種功能,而不必關心設備的內(nèi)部實現(xiàn),它是一種主要實現(xiàn)音/視頻播放的方法。下面對播放器程序需要調(diào)用的相關函數(shù)做簡要說明:播放文件的函數(shù):voidCActiveMovie3::Run(){InvokeHelper(0x60020001,DISPATCH_METHOD,VT_EMPTYNULL,NULL);}暫停播放的函數(shù):voidCActiveMovie3::Pause(){InvokeHelper(0x60020002,DISPATCH_METHOD,VT_EMPTYNULL,NULL);}停止播放的函數(shù):voidCActiveMovie3::Stop(){InvokeHelper(0x60020003,DISPATCH_METHOD,VT_EMPTYNULL,NULL);}設置音量的函數(shù):voidCActiveMovie3::SetVolume(longnNewValue){staticBYTEparms[]=VTS_I4;InvokeHelper(0x13,DISPATCH_PROPERTYPUT,VT_EMPTY,NULL,parms,nNewValue);}4.5功能模塊設計程序中的播放模塊、暫停模塊、停止模塊、音量模塊等功能模塊只需要直接調(diào)用控件中的函數(shù)即可實現(xiàn),為各控件添加成員變量如圖9所示:ControlIDs:TypeMemberIDCCLOSECButtonmCloseIDC_EDIT1CStringm_Edit1IDCFULSCREEENCButtonmFullScreenIDCLIST1CListBoxmlistIDCLOWERCButtonmLowerIDCMuteIDC_OPENCButtonmOpenIDCPAUSECButtonmPauseIDCPLAYCButtonmPlayIDC_REPEATCButtonmRepeatIDC_STATIC2圖9為控件添加成員變量(1)為了將所需播放的文件加入列表框,我們采用OnOpen()函數(shù)來顯示〃打開〃對話框通過該對話框選擇要執(zhí)行的文件。以便為以后調(diào)用作準備。代碼如下:voidCMediaPlayerDlg::OnOpen(){charszFileFilter[]="所有文件(*.*)|*.*||";〃可選擇不同格式的媒體文件CFileDialogfileDialog(TRUE,NULL,NULL,OFN_HIDEREADONLYszFileFilter);if(fileDialog.DoModal()==IDOK){〃消息響應函數(shù)CStringm_FileName=fileDialog.GetPathName();〃選擇文件m_list.AddString(m_FileName);〃加入到列表框}}(2)為了循環(huán)播放,我們利用定時器來工作,采用OnTimer()函數(shù)來激活定時器,代碼如下:voidCMy1Dlg::OnTimer(UINTnIDEvent){CStringm_filename;〃定義文件變量doubleCurPos=m_ActiveMovie.GetCurrentPosition();〃獲得播放位置if(CurPos==0){m_list.SetCurSel(0);〃選擇列表框的第一個文件m_list.GetText(0,m_filename);m_ActiveMovie.SetAutoStart(1);〃設置自動播放m_ActiveMovie.SetFileName(m_filename);〃設置文件

〃播放〃獲得播放文件〃插入列表框最后〃刪除用過的文件m_ActiveMovie.Run();m_list.GetCurSel();m_list.InsertString(-1,m_filename);〃播放〃獲得播放文件〃插入列表框最后〃刪除用過的文件}(3)全屏播放功能調(diào)用了m_ActiveMovie.SetMovieWindowSize函數(shù),代碼如下:voidCMediaPlayerDlg::OnFulscreeen()〃全屏函數(shù),實現(xiàn)全屏播放視頻的功能{m_ActiveMovie.Pause();〃暫停播放m_ActiveMovie.SetFullScreenMode(true);〃設置全屏播放屬性為真,即開啟全屏播放m_ActiveMovie.SetMovieWindowSize(SW_SHOWMAXIMIZED);//設置播放窗口大小為最大m_ActiveMovie.Run();〃繼續(xù)播放}(4)音量模塊由減小、增大和靜音三部分組成,均通過調(diào)用m_ActiveMovie.SetVolume函數(shù)實現(xiàn),代碼如下:voidCMediaPlayerDlg::OnLower()〃減小音量函數(shù){longVolume=m_ActiveMovie.GetVolume();〃獲得當前音量賦值給Volume變量m_ActiveMovie.Pause();〃暫停播放m_ActiveMovie.SetVolume(Volume-300);〃設置音量為原音量-300m_ActiveMovie.Run();〃繼續(xù)播放}voidCMediaPlayerDlg::OnUpper()〃增大音量函數(shù){longVolume=m_ActiveMovie.GetVolume();〃獲得當前音量賦值給Volume變量m_ActiveMovie.Pause();〃暫停播放m_ActiveMovie.SetVolume(Volume+300);〃設置音量為原音量+300m_ActiveMovie.Run();〃繼續(xù)播放}voidCMediaPlayerDlg::OnMute()〃靜音函數(shù),實現(xiàn)靜音功能{m_ActiveMovie.Pause();〃暫停播放m_ActiveMovie.SetVOlume(-4000);〃將音量參數(shù)降低4000,達到靜音的效果m_ActiveMovie.Run();〃繼續(xù)播放}關于模塊實現(xiàn)彈出關于對話框的功能,均通過調(diào)用voidCMediaPlayerDlg::About()函數(shù)實現(xiàn),關于對話框如圖10所示:其代碼如下:voidCMediaPlayerDlg::About()//關于函數(shù),實現(xiàn)彈出關于對話框的功能{CAboutDlgaboutDlg;//定義變量aboutDlg.DoModal();//彈出關于對話框}(6)為退出按鈕IDCANCEL添加消息映射OnCancel,并添加下列代碼:voidCMediaPlayerDlg::OnCancel(){//TODO:AddextracleanuphereMessageBox("感謝您的使用!","再見");CDialog::OnCancel();}4.6歌曲信息模塊的設計歌曲信息查詢模塊詳情如圖11所示:歌曲信息:|查詢|添力可圖11歌曲信息查詢模塊創(chuàng)建歌曲信息對話框如圖12所示:圖12歌曲信息模塊為對話框資源創(chuàng)建一個對話框類CSongDlg,在MFC中為控件添加成員變量如下圖13所示:ControlIDs:TypeMemberIDCGEQUCStrinqmGequIDC_GESHOUIDC_ZHUANJIIDC_ZUOCIIDC_ZUOQUCStringmGeshouCStringmZhuanjiCStringmZuociCStringmZuoquIDOK圖13為控件添加成員變量然后為IDOK添加BN_CLICKED消息映射,并添加下列代碼:voidCSongDlg::OnOK(){UpdateData();CStringstr;m_Gequ.TrimLeft();if(m_Gequ.IsEmpty())MessageBox("歌曲名稱不能為空!");elseif(m_Geshou.IsEmpty())MessageBox("歌手不能為空!");elseCDialog::OnOK();}為上對話框定義CRecordSet派生類如圖14所示:為CRecordSet派生類在MFC中為控件添加成員變量如下圖13所示:ColumnNames:TypeMember[編號]longmcolumnlCStringm_GeQu[墅手]CStringm_GeShou[專輯名稱]CStringm_ZhuanJiCStringmZuoCi作曲]CStringmZuoQu圖15添加成員變量為表單資源的一查詢按扭添加BN_CLICKED消息映射,并添加下列代碼:voidCMediaPlayerDlg::OnChaxun(){CSongSetcSet;UpdateData();m_Edit1.TrimLeft();if(m_Edit1.IsEmpty()){MessageBox("要查詢的歌曲不能為空!");return;}CSongDlgdlg;cSet.m_strFilter.Format(”歌曲名稱='%s'",m_Edit1);cSet.Open();if(!cSet.IsEOF())//如果打開的記錄集有記錄{CSongDlgdlg;dlg.m_Gequ=cSet.m_GeQu;dlg.m_Geshou=cSet.m_GeShou;dlg.m_Zuoci=cSet.m_ZuoCi;dlg.m_Zuoqu=cSet.m_ZuoQu;dlg.m_Zhuanji=cSet.m_ZhuanJi;dlg.DoModal();UpdateData(FALSE);//自動更新表單中控件顯示的內(nèi)容}elseMessageBox("沒有查到你要找的歌曲記錄!");if(cSet.IsOpen())cSet.Close();}為表單資源的添加按扭添加BN_CLICKED消息映射,并添加下列代碼:voidCMediaPlayerDlg::OnTianjia(){//TODO:AddyourcontrolnotificationhandlercodehereCSongDlgdlg;CSongSetpSet;

=dlg.m_Gequ;=dlg.m_Geshou;=dlg.m_Zhuanji;=dlg.m_Zuoci;=dlg.m_Zuoqu;if(dlg.DoModal()==IDOK){pSet.Open();pSet.AddNew();pSet.m_GeQupSet.m_GeShoupSet.m_ZhuanJipSet.m_ZuoCipSet.m_ZuoQupSet.Update();pSet.Requery();}5程序?qū)崿F(xiàn)結(jié)果=dlg.m_Gequ;=dlg.m_Geshou;=dlg.m_Zhuanji;=dlg.m_Zuoci;=dlg.m_Zuoqu;5.1程序運行流程圖該播放器程序運行過程的流程圖如下圖5.1所示:圖17程序運行流程圖5.2播放器實現(xiàn)結(jié)果演示由于做程序時,把所有的文件包含在一個工程當中,已進行編譯生成一個可執(zhí)行文件,運行可執(zhí)行文件“多媒體播放器.exe”即可運行程序。(1)程序啟動時,自動進入播放器主界面。程序是基于MFC的對話框應用程序制作的,所以程序主界面只有一個對話框,界面簡潔清爽,程序主界面如下圖19所示:圖19播放器主界面(3)單擊打開按鈕,彈出打開文件的對話框,如圖5.4所示。在文件類型下拉列表中,可以選擇打開某種格式的文件,如圖20所示,基本上現(xiàn)在網(wǎng)絡上流行的主流媒體格式都可以打開播放,選擇一個媒體文件后單擊打開。

圖20打開文件對話框(4)單擊打開后返回程序主界面,在右邊的播放列表中增加了剛才打開的文件,如圖21所示:圖21打開mp3文件(5)單擊“播放”按鈕,開始播放文件,在播放過程中,可通過單擊進度條自由選擇播放進度。(6)在播放過程中,可以通過“暫?!?、“停止”、“全屏”、“+”(增大音量)、“-”(降低音量)、“X”(靜音)等按鈕達到相應的播放控制功能。此時,還可以再次單擊“打開”按鈕繼續(xù)向播放列表中添加媒體文件,程序會按列表中的順序自動循環(huán)播放文件。已經(jīng)播放過的文件會自動被置于列表尾部,如圖22所示,Dinginthesun.mp3被置于表尾。

圖22循環(huán)播放多個文件(7)分別對mp3、wma、wmv、avi、mpg等不同音頻、視頻格式的文件進行測試播放,均可以成功運行,部分效果如圖23、24所示:圖23播放avi文件多媒體播放器打開關閉出退.I:\.葫蘆>!±.rmvb播放列表I:'獅子王-avi歌曲信息:查詢音量曰田岡循環(huán)模式循環(huán)播放暫停停止全屏圖24播放rmvb文件(8)在歌曲信息編輯框內(nèi)輸入所要查詢歌曲的名字,點擊查詢按鈕即可查詢歌曲的相關信息,如圖25所示:圖25查詢結(jié)果(9)點擊添加按鈕可向數(shù)據(jù)庫添加新的歌曲信息,如圖26所示:圖26添加歌曲(10)單擊“關于”按鈕,會彈出關于信息,如下圖27所示:6結(jié)束語我使用VC++6.0這個微軟強大的可視化應用程序開發(fā)工具,在VC++環(huán)境下,利用MFC庫和ActiveMovie控件,可以較為方便的制作界面美觀的并且可以實現(xiàn)多種媒體格式正常播放的多媒體播放器程序,帶給我們美好的視聽享受。我設計的這個多媒體播放器功能比較強大,且使用簡單,能夠進行日常所有的媒體播放任務,體積較小,占用內(nèi)存極低。能夠高保真的播放大多數(shù)的音頻、視頻文件。程序通過調(diào)試運行,實現(xiàn)了設計的目標,并且經(jīng)過適當完善后,將可以成為一款簡易的媒體播放軟件。由于時間關系,程序功能實現(xiàn)不夠完善,界面也不夠美觀等。這些都需要不斷的改進和補充。具體存在的問題及不足主要有以下三點:(1)播放器的界面還不夠美觀。由于時間有限,沒有給每個按鈕都做一張位圖圖片,如果時間足夠我想我會盡量完善它,使其兼具實用與美觀,給人更大的視覺享受。(2)播放器的穩(wěn)定性不高。有時在播放非主流格式的媒體文件時,會發(fā)生報錯現(xiàn)象,這也是由于程序兼容性不高的緣故。(3)播放視頻時的窗口大小問題。在播放畫面分辨率較高的視頻文件時,會造成畫面溢出對話框,影響觀看及程序美觀,這個問題在今后一定要解決。在完成制作的過程中,我還是受益匪淺的,首先是以前學過的理論知識終于應用到了實踐中,具體的一些書本知識應用到了實際生活中,學以致用,使我們對于VC++程序設計有了更加深入的理解,尤其是提高了我在實際操作中收集信息、對信息進行價值23判斷、進行信息整理、信息加工的能力。同時,也讓我了解了在設計的過程中一些分析問題的方法技巧,清楚了自學的重要性,在以后的學習工作中當面對新的問題時讓我知道了該如何從容的面對。我結(jié)合以前在課堂中的學習內(nèi)容和收集課外的相關資料,不斷的學習改進,當遇到問題時努力解決,虛心請教老師和同學,雖然設計過程十分艱難,但也燃起了我對專業(yè)的興趣和求索,在翻閱大量的相關書籍和瀏覽了各種應用程序后,我總結(jié)經(jīng)驗再結(jié)合自己的學習基礎,終于完成了多媒體播放器軟件,盡管我設計的程序還比較簡單也不夠完善,但看到自己的努力成果卻有著莫大的滿足感,我希望在以后的學習道路中能夠繼承老師對我的期望繼續(xù)對VC++以及相關語言的學習,我相信只要經(jīng)過我堅持不懈的努力,總有一天會作出另人滿意的程序。參考文獻[1]鄭阿奇.VisualC++教程[M].北京:機械工業(yè)出版社,2004⑵JesseLiberty.C++編程實例詳解[M].北京:電子工業(yè)出版社,1999東方人華等.VisualC++6.0范例入門與提高[M].北京:清華大學出版社,2003周長發(fā).VisualC++.NET多媒體編程[M].北京:電子工業(yè)出版社,2002老虎工作室.舉一反三——VisualC++g序設計實戰(zhàn)訓練[M].北京:人民郵電出版社出版,2004附錄:源程序清單//程序名稱:MediaPlayerDlg.CPP//程序功能:通過調(diào)用ActiveMovie控件中的相關函數(shù),實現(xiàn)多種播放控制功能//程序作者:趙瑞恒//最后修改日期:2007-4-9::〃省略程序前部的MFC類庫中自身生成的程序內(nèi)容voidCMediaPlayerDlg::OnOpen()〃實現(xiàn)打開、添加播放文件的函數(shù){charszFileFilter[]=//定義文件格式"所有支持格式(*.mp3;*.wma;*.wav;*.avi;*.mov;*.mid;*.mpeg;*.rm;*.rmvb;*.dat;*.mmm;*,rmi)|*.mp3;*.wma;*.wav;*.avi;*.mov;*.mid;*.mpeg;*.rm;*.rmvb;*.dat;*.mmm;*,rmi|””音頻文件(*.wma;*.mp3;*.mid)|*.wma;*.mp3;*.mid|”"視頻文件(*.wav;*.avi;*.mov;*.mpeg;*.rm;*.rmvb)|*.wav;*.avi;*.mov;*.mpeg;*.rm;*.rmvb|”"Mp3文件(*.mp3)|*.mp3|""Wma文件(*.wma)|*.wma|”"Video文件(*.dat)|*.dat|”"Wave文件(*.wav)|*.wav|”"AVI文件(*.avi)|*.avi|”"Real文件(*.rm;*.rmvb)|*.rm;*.rmvb|""Movie文件(*.mov)|*.mov|""Media文件(*.mmm)|*.mmm|""Mid文件(*.mid;*,rmi)|*.mid;*.rmi|""MPEG文件(*.mpeg)|*.mpeg|"”所有文件(*.*)|*.*||";CFileDialogfileDialog(TRUE,NULL,NULL,OFN_HIDEREADONLYszFileFilter);//調(diào)用fileDialog的庫函數(shù)打開文件if(fileDialog.DoModal()==IDOK)〃點擊打開按鈕{CStringm_FileName=fileDialog.GetPathName();〃選擇文件m_list.AddString(m_FileName);〃加入到列表框}}voidCMediaPlayerDlg::OnPlay()〃播放函數(shù){SetTimer(1,2000,NULL);〃設置循環(huán)參數(shù),標志為1,時間為2秒m_ActiveMovie.Run();〃開始播放}voidCMediaPlayerDlg::OnStop()〃停止播放函數(shù){KillTimer(1);〃停止循環(huán)m_ActiveMovie.Stop();〃停止播放}voidCMediaPlayerDlg::OnPause()//暫停播放函數(shù){m_ActiveMovie.Pause();〃調(diào)用控件的暫停函數(shù)暫停播放}voidCMediaPlayerDlg::OnClose()〃關閉窗口函數(shù){KillTimer(1);〃停止標志為1的循環(huán)m_ActiveMovie.CloseWindow();〃關閉窗口}voidCMediaPlayerDlg::OnLower()〃減小音量函數(shù){longVolume=m_ActiveMovie.GetVolume();〃獲得當前音量賦值給Volume變量m_ActiveMovie.Pause();〃暫停播放m_ActiveMovie.SetVolume(Volume-300);〃設置音量為原音量-300m_ActiveMovie.Run();〃繼續(xù)播放}voidCMediaPlayerDlg::OnUpper()〃增大音量函數(shù){longVblume=m_ActiveMovie.GetVolume();〃獲得當前音量賦值給Volume變量m_ActiveMovie.Pause();〃暫停播放m_ActiveMovie.SetVblume(Vblume+300);〃設置音量為原音量+300m_ActiveMovie.Run();〃繼續(xù)播放}voidCMediaPlayerDlg::OnRepeat()//循環(huán)控制函數(shù),實現(xiàn)對循環(huán)的控制功能{if(!isRepeat){〃判斷是否正在循環(huán)SetTimer(1,2000,NULL);〃設置循環(huán)的標志為1,循環(huán)間隔為2秒isRepeat=TRUE;〃將循環(huán)變量設為TURESetDlgItemText(IDC_STATIC2,模式:循環(huán),〃將靜態(tài)文本顯示為循環(huán)模式}else{KillTimer(1);〃停止標志為1的循環(huán)isRepeat=FALSE;〃將循環(huán)變量設為FALSESetDlgItemText(IDC_STATIC2,模式:普通");〃將靜態(tài)文本顯示為普通模式}}voidCMediaPlayerDlg::OnFulscreeen()〃全屏函數(shù),實現(xiàn)全屏播放視頻的功能{m_ActiveMovie.Pause();〃暫停播放m_ActiveMovie.SetFullScreenMode(true);//設置全屏播放屬性為真,即開啟全屏播放m_ActiveMovie.SetMovieWindowSize(SW_SHOWMAXIMIZED);//設置播放窗口大小為最大m_ActiveMovie.Run();//繼續(xù)播放}voidCMediaPlayerDlg::OnTimer(UINTnIDEvent)〃實現(xiàn)循環(huán)順序播放功能的函數(shù){CStringm_filename;〃定義文件變量doubleCurPos=m_ActiveMovie.GetCurrentPosition();//獲得播放位置if(CurPos==0)〃判斷當前文件是否為第一個m_list.SetCurSel(0);〃選擇列表框的第一個文件m_list.GetText(0,m_filename);〃獲得文件名m_ActiveMovie.SetAutoStart(1);〃設置自動播放m_ActiveMovie.SetFileName(m_filename);〃設置文件m_ActiveMovie.Run();〃播放m_list.GetCurSel();m_list.InsertString(-1,m_filename);〃插入列表框最后m_list.DeleteStri

溫馨提示

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

最新文檔

評論

0/150

提交評論