




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 媒體播放器綜合設(shè)計(jì)報(bào)告MFC 重慶交通大學(xué)信息科學(xué)與工程學(xué)院 程序設(shè)計(jì)實(shí)訓(xùn)I綜合設(shè)計(jì)報(bào)告 媒體播放器 學(xué)號(hào): 姓名: 專業(yè): 班級(jí): 實(shí)驗(yàn)室(中心): 指導(dǎo)老師: 完成時(shí)間:2012.12.14 重慶交通大學(xué)信息科學(xué)與工程學(xué)院綜合設(shè)計(jì)任務(wù)書 程序設(shè)班軟件一指導(dǎo)教 魯云I實(shí) 媒體播放完成時(shí)2012-11-17、需求分析、系統(tǒng)設(shè)計(jì)、編程與實(shí)(必須附上自己添加的源代碼并加上注釋、測試內(nèi)容與結(jié)果、存在的問題與不足及對(duì)策、對(duì)這門課的建議、參考文設(shè)計(jì)成果要、兩人一題,分工協(xié)作,獨(dú)立完成(多人協(xié)作完成,要明分工情況、要求能夠?qū)π畔⑦M(jìn)行添加、修改、刪除、查詢、統(tǒng)計(jì)等作、數(shù)據(jù)庫中不得少于兩張表,每張表不得少個(gè)
2、字段,張表中不得少3條記錄、使MF完成設(shè)計(jì)、提交設(shè)計(jì)報(bào)告,設(shè)計(jì)報(bào)告內(nèi)容完整、格式規(guī)考核內(nèi)容與方、設(shè)計(jì)報(bào)告 50%、程序加演示50% 每位同學(xué)單獨(dú)演示自己的程序并現(xiàn)場回答提問。 2 版面要求 1 題目用黑體三號(hào),段后距2 標(biāo)題用黑體四號(hào),段前、段后距 正文用小四號(hào)宋體,行距為3標(biāo)題按“一”、4 “”、行)18磅(或1磅(或6倍行距;1.25“”順序編號(hào)。1”、“,居中對(duì)齊; ;0.3行) 備注 實(shí)訓(xùn)綜合應(yīng)用實(shí)習(xí)部分。請同學(xué)們參考Visual C+ 錄 目 4 一、引言 系統(tǒng)設(shè)計(jì)的基本概念與原理 二、 4 5 .三、需求分析 四、系統(tǒng)設(shè)計(jì) .6 .9 五、編程與實(shí)現(xiàn) 六、測試內(nèi)容與結(jié)果 .11 七
3、、心得體會(huì).16 .17 八、對(duì)這門課的建議 3 九、參考文獻(xiàn) 17 教師評(píng)閱意見: 簽名: 年 月 日 成績: 以下為設(shè)計(jì)報(bào)告正文內(nèi)容 4 一.引言 現(xiàn)在人們娛樂的方式多種多樣,已經(jīng)有了很明顯的變化,以前的戶外運(yùn)動(dòng)現(xiàn)在已經(jīng)在銳減,換而之的是網(wǎng)絡(luò)游戲與網(wǎng)上聊天,而在同時(shí)聽聽音樂看看電影也 成為了巨大的需求,所以很多多媒體播放軟件出現(xiàn)了,形形色色各種都有,而我也趕下時(shí)髦,體驗(yàn)一下編寫的過程,現(xiàn)在才發(fā)現(xiàn)這并不難,重要的是插件的插入,而其他的功能實(shí)現(xiàn)只需調(diào)用相應(yīng)函數(shù)就行了! 二系統(tǒng)設(shè)計(jì)的基本概念與原理 基本概念與知識(shí)1. (1). MFC MFC(Microsoft Foundation Class
4、es),是一個(gè)微軟公司提供的類庫(class libraries),以C+類的形式封裝了Windows的API,并且包含一個(gè)應(yīng)用程序框架,以減少應(yīng)用程序開發(fā)人員的工作量。其中包含的類包含大量Windows句柄封裝類和很多Windows的內(nèi)建控件和組件的封裝類。 (2) MFC編程特點(diǎn) 微軟基礎(chǔ)類(Microsoft Foundation Classes),是微軟提供的,用于在C+環(huán)境下編寫應(yīng)用程序的一個(gè)框架和引擎,VC+是WinDOS下開發(fā)人員使用的專業(yè)C+ SDK(SDK,Standard SoftWare Develop Kit,專業(yè)軟件開發(fā)平臺(tái)),MFC就是掛在它之上的一個(gè)輔助軟件開發(fā)包
5、。 MFC是Win API與C+的結(jié)合,API,即微軟提供的Windows下應(yīng)用程序的編程語言接口,是一種軟件編程的規(guī)范,但不是一種程序開發(fā)語言本身,可以允許用戶使用各種各樣的第三方的編程語言來進(jìn)行對(duì)Windows下應(yīng)用程序的開發(fā),使這些被開發(fā)出來的應(yīng)用程序能在Windows下運(yùn)行,因此用它們開發(fā)出來的應(yīng)用程序都能工作在Windows的消息機(jī)制和繪圖里,遵守Windows作為一個(gè)操作系統(tǒng)的內(nèi)部實(shí)現(xiàn), MFC是微軟對(duì)API函數(shù)的專用C+封裝,這種結(jié)合一方面讓用戶使用微軟的專業(yè)C+ SDK來進(jìn)行Windows下應(yīng)用程序的開發(fā)變得容易,因?yàn)镸FC是對(duì)API的封裝,微軟做了大量的工作,隱藏了好多程序開
6、發(fā)人員在Windows下用C+ & MFC編制軟件時(shí)的大量內(nèi)節(jié),如應(yīng)用程序?qū)崿F(xiàn)消息的處理,設(shè)備環(huán)境繪圖等。 3 開發(fā)環(huán)境 開發(fā)工具:Microsoft Visual C+ 6.0 5 開發(fā)語言:C+ 運(yùn)行支持環(huán)境: 硬件環(huán)境: CPU 1.0G以上 內(nèi)存256M以上 硬盤20G以上 操作系統(tǒng):Microsoft Windows 2000,XP,VISTA,Windows 7 三需求分析 1、功能需求 MP3媒體播放器軟件是采用MFC設(shè)計(jì)的Windows應(yīng)用程序,在MFC的集成環(huán)境下填加文檔/視圖結(jié)構(gòu)。這種程序框架和簡單應(yīng)用程序之間的重要區(qū)別就在于形成應(yīng)用程序的主窗口不只需要一個(gè)類的對(duì)象,而是需
7、要三個(gè)類對(duì)象:1框架窗口類對(duì)象,2視圖類對(duì)象,3文檔類對(duì)象。1、2、3組成應(yīng)用程序的界面。在加入MP3的解碼使程序界面有播放MP3的功能。 MP3媒體播放應(yīng)用程序是用Windows Media Player的界面插件,并且應(yīng)用Media Player的解碼功能,使應(yīng)用程序能夠界面清析、播放格式增加并且操作簡單。 能夠打開文件放進(jìn)播放列表,點(diǎn)擊播放鍵使其播放,暫停鍵暫停,停止鍵停止,重播鍵重新播放,全屏鍵全屏播放,退出鍵退出程序,增大鍵增大音量,減小鍵減小音量! 2、性能需求 性能需求是軟件工程需求分析的一項(xiàng)重要內(nèi)容。本應(yīng)用程序的的性能需求播放音樂。具體功能包括播放MP3、WAV、AVI等媒體格
8、式。 應(yīng)用程序界面下的功能選項(xiàng)中點(diǎn)擊打開,之后點(diǎn)擊所要播放的文件,就用將該文件播放。 3、 分析 分析的任務(wù)是確定待開發(fā)的軟件項(xiàng)目“做什么”,也就是說待開發(fā)的軟件所具有的功能。具體任務(wù)包括確定軟件系統(tǒng)的功能需求,性能需求。其中,功能需求應(yīng)給出軟件必須具備的全部功能。待開發(fā)的軟件是MP3媒體播放器,要分析出它所能播放的媒體格式;性能需求是指軟件的安全性,可靠性,可維護(hù)性,可靠性,精度,容錯(cuò)性能力,運(yùn)行效率等。這些是保證開發(fā)之后能夠正常的使用。在大型軟件的分析中,軟件的分析需要反復(fù)多次,以達(dá)到更加準(zhǔn)確, 6 這是開發(fā)軟件的基本要求。 4、用戶分析 1)要求有穩(wěn)定的性能,可實(shí)現(xiàn)要求的功能; 2)擁有
9、較好的界面,很方便人操作! 四系統(tǒng)設(shè)計(jì) 1.系統(tǒng)架構(gòu)設(shè)計(jì) 多媒體播放器的具體功能如下: (1) 打開本地媒體文件(可支持的文件有*.mp3),在打開對(duì)話框可以對(duì)本地媒體文件進(jìn)行查找; (2) 播放控制即可通過面板上按鈕 (3) 暫停播放媒體文件,繼續(xù)播放媒體文件; (4) 停止播放媒體文件,播放進(jìn)度條返回起點(diǎn); (5)調(diào)整播放音量(增大、減小、靜音切換); 7 2.系統(tǒng)功能設(shè)計(jì) 根據(jù)MP3播放器的功能設(shè)計(jì),將整個(gè)系統(tǒng)分為操作界面塊(播放器操作界面)、操作參數(shù)處理塊(MFC控件)、播放控制塊(Windows Media Player 控件)三個(gè)模塊,這三個(gè)模塊各自的功能與它們之間的關(guān)系構(gòu)成了整個(gè)
10、播放器的構(gòu)架。下面是每個(gè)模塊的具體描述: 操作界面模塊:即多媒體播放器的操作界面,將用戶的各項(xiàng)操作作為參數(shù)傳遞給操作參數(shù)處理塊(MFC控件),并接收操作參數(shù)處理塊的處理結(jié)果(列表相關(guān))與播放控制塊的播放控制顯示處理操作結(jié)果,將此信息返回給用戶; 操作參數(shù)處理塊:由MFC通用控件控制,接收來自操作界面的各項(xiàng)操作信息,并對(duì)這下操作進(jìn)行分類處理,若是有關(guān)播放控制類的操作則將把操作請求信息加工后傳遞給模仿控制模塊;若是列表控制類的則將這些操作先加工處理再將信息傳遞給播放塊。再者接受來自播放控制模塊的處理數(shù)據(jù),并將處理結(jié)果綜合整理后傳遞給操作界面,以呈現(xiàn)于用戶。 播放控制塊:由Windows Media
11、 Player系統(tǒng)調(diào)用控制,接收來自操作參數(shù)處理塊的媒體播放控制等相關(guān)操作,并將處理結(jié)果傳遞給操作參數(shù)處理塊。 8 3.子系統(tǒng)與模塊設(shè)計(jì) (1)打開菜單項(xiàng),打開本地媒體文件。調(diào)用Windows API CFileDialog打開打開文件對(duì)話框。 輸入?yún)?shù):選取的文件。 輸出參數(shù):文件路徑。 (2)Play菜單項(xiàng),將當(dāng)前暫停或者停止?fàn)顟B(tài)的媒體文件的播放狀態(tài)切換至播放播放狀態(tài)。 輸入?yún)?shù):Play指令選取。 輸出參數(shù):播放控制信息。 (3)暫停菜單項(xiàng),將當(dāng)前處于播放狀態(tài)的媒體文件的播放狀態(tài)切換至?xí)和!?輸入?yún)?shù):Pause指令選取。 輸出參數(shù):暫??刂菩畔ⅰ?(4)停止菜單項(xiàng),將當(dāng)前處于播放狀態(tài)或
12、暫停狀態(tài)的媒體文件的播放狀態(tài)切換至停止?fàn)顟B(tài)。 輸入?yún)?shù):停止指令選取。 輸出參數(shù):停止控制信息。 (5)退出菜單項(xiàng),退出多媒體播放器程序。 輸入?yún)?shù):退出指令選取。 輸出參數(shù):0。 (6)音量增大項(xiàng),控制音量大小,將音量增大。 輸入?yún)?shù):音量增大指令選取。 輸出參數(shù):音量增大控制信息。 (7)音量減小項(xiàng),控制音量大小,將音量減小。 輸入?yún)?shù):音量減小指令選取。 輸出參數(shù):音量減小控制信息。 9 (8)播放進(jìn)度條,能與媒體文件的播放進(jìn)度同步,以顯示當(dāng)前的播放進(jìn)度。 輸入?yún)?shù):媒體文件的長度信息。 五編程與實(shí)現(xiàn) 1.系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 1. 多媒體播放器的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) (1) 打開媒體文件 代碼
13、: void CMediaPlayerDlg:OnOpen() char szFileFilter= Mp3 File(*.mp3)|*.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(*.*)|*.*|;/
14、文件類型過濾 CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFil 10 eFilter); if(dlg.DoModal()=IDOK) CString PathName=dlg.GetPathName(); PathName.MakeUpper(); m_ActiveMovie.SetFileName(PathName); (2) 關(guān)閉媒體文件 代碼: void CMediaPlayerDlg:OnClose() m_ActiveMovie.CloseWindow(); / TODO: Add your control notifica
15、tion handler code here (3) 播放打開的文件 代碼: void CMediaPlayerDlg:OnPlay() m_ActiveMovie.Run();/播放文件 SetTimer(0,20,NULL); CString PathName =m_ActiveMovie.GetFileName(); int strLength = PathName.GetLength() + 1; char *pValue = new charstrLength; 11 strncpy(pValue, PathName, strLength); SetWindowText(pValue
16、); /TODO: Add your control notification handler code here (4)暫停正在播放的文件 代碼: void CMediaPlayerDlg:OnPause() m_ActiveMovie.Pause(); / TODO: Add your control notification handler code here (5)停止打開的文件 代碼: void CMediaPlayerDlg:OnOnstop() m_ActiveMovie.Stop();/停止播放文件 KillTimer(0);/關(guān)掉定時(shí)器 / TODO: Add your co
17、ntrol notification handler code here (6)降低音量 代碼: 12 void CMediaPlayerDlg:OnLower() long Volume=m_ActiveMovie.GetVolume(); m_ActiveMovie.Pause() ; m_ActiveMovie.SetVolume(Volume-100) ; m_ActiveMovie.Run() ; / TODO: Add your control notification handler code here (7) 增大音量 代碼: void CMediaPlayerDlg:OnUp
18、per() long Volume=m_ActiveMovie.GetVolume(); m_ActiveMovie.Pause(); m_ActiveMovie.SetVolume(Volume+100); m_ActiveMovie.Run(); / TODO: Add your control notification handler code here (8)快放 代碼: 13 void CMediaPlayerDlg:OnFast() m_ActiveMovie.SetRate(m_ActiveMovie.Get Rate()+1); / TODO: Add your control
19、 notification handler code here (9)慢放 代碼: void CMediaPlayerDlg:OnSlow() if(m_ActiveMovie.GetRate()1) m_ActiveMovie.SetRate(m_ActiveMovie.GetRate()-1); / TODO: Add your control notification handler code here (10)重放 void CMediaPlayerDlg:OnRepeat() / TODO: Add your control notification handler code her
20、e 14 if(!isRepeat) isRepeat=TRUE; SetDlgItemText(IDC_STATIC2,Status:Repeat); Else isRepeat=FALSE; SetDlgItemText(IDC_STATIC2,Status:Normal); 六測試內(nèi)容與結(jié)果 1.概述 (1)打開文件(從曲庫中找出歌曲加入列表中) 15 (2)播放,暫停,停止,音量調(diào)節(jié),快放,慢放 2. 測試環(huán)境 (1) 3.測試工具:Microsoft Visual C+ 6.0 測試計(jì)劃4. )打開文件(1 2()播放及各按鈕的使用 )多次運(yùn)行,檢查穩(wěn)定性3( 測試項(xiàng)目及結(jié)果5. )
21、打開文件(1 16 經(jīng)過測試發(fā)現(xiàn)此功能正常工作。 17 (2)測試播放按鈕 經(jīng)過測試發(fā)現(xiàn)此功能正常工作。 (3)測試暫停按鈕 18 經(jīng)過測試發(fā)現(xiàn)此功能正常工作。 (4)測試停止按鈕 經(jīng)過測試發(fā)現(xiàn)此功能正常工作。 (5)聲音增大測試 經(jīng)過測試發(fā)現(xiàn)此功能正常工作。 (6)聲音減小測試 經(jīng)過測試發(fā)現(xiàn)此功能正常工作。 19 七心得體會(huì) 1. 本次課程設(shè)計(jì)的任務(wù)是利用VC+開發(fā)一個(gè)支持mp3、等不同音頻格式的多媒體播放器,以便通過課程設(shè)計(jì)掌握多媒體編程的基本原理。通過本次課程設(shè)計(jì)自己進(jìn)一步熟悉了Visual C+ 6.0 開發(fā)環(huán)境工具,鞏固復(fù)習(xí)了MFC的應(yīng)用程序編程,對(duì)Windows Media Pla
22、yer 的開發(fā)實(shí)現(xiàn)有了深刻的了解,更熟悉了C+語言,體會(huì)到了面向?qū)ο蟮拈_發(fā)過程。 多媒體播放器的設(shè)計(jì)是基于MFC框架,當(dāng)然也是基于Win32 開發(fā)的應(yīng)用程序。在開發(fā)過程中為了完善各多媒體播放器功能,設(shè)計(jì)用戶之間友好的接口,使用了MFC通用控件:按鈕、靜態(tài)文本框、編輯框、組合框、列表框,在制作過程中對(duì)這些控件的屬性、事件及方法都有了較為熟練的掌握。另外基于MFC開發(fā)程序必定要對(duì)整個(gè)MFC的框架有所了解,在設(shè)計(jì)時(shí)也進(jìn)一步熟悉了MFC相關(guān)調(diào)用的實(shí)現(xiàn)。 在實(shí)現(xiàn)媒體播放這一重要功能時(shí),采用了調(diào)用Windows Media Player 控件來實(shí)現(xiàn)基本播放功能,通過本次的課程設(shè)計(jì),對(duì)C+,MFC,面向?qū)ο?/p>
23、的開發(fā)過程有了更深的認(rèn)識(shí)與掌握,學(xué)習(xí)到了Media Player 控件調(diào)用,充實(shí)了自身,學(xué)到很多有用的工具、方法。 2.經(jīng)驗(yàn)教訓(xùn)及其分析 (1)真是不經(jīng)歷不知道,我現(xiàn)在才發(fā)現(xiàn)自己的基礎(chǔ)是那么的薄弱,MFC的各種控件的使用方法都不是很熟,尤其是列表框,無論怎么學(xué),使用什么方法,都弄不了,真是愁煞我也。以后一定要極愛按基礎(chǔ)的扎實(shí),為以后的編程提供巨大的方便! (2)以后做事要做好全局的規(guī)劃,決定好了之后就不要輕易的改變,否則會(huì)誤了大事,這讓我想到了那個(gè)挖井的故事,這兒挖一點(diǎn)挖不出水就不挖了,那兒挖不出水也不挖了,最后挖了好多地方,還是沒有挖出來一滴水,所以做什么 20 事都是淺嘗輒止的話,最后是成
24、不了大事的!就比如說我這次,做了很多卻一個(gè)也沒做成。 (3)通過這次課設(shè),我學(xué)會(huì)了很多,應(yīng)該說很熟練的掌握了MFC控件的添加與使用,也對(duì)使用MFC的各種控件駕輕就熟了,也學(xué)會(huì)了一定的調(diào)試技巧,感覺收獲頗豐,而遺憾的是自己未能獨(dú)立的完成一個(gè)項(xiàng)目! 八、對(duì)這門課的建議 這門課程應(yīng)該以實(shí)驗(yàn)和上機(jī)操作為主,通過這種方式才能更好的提高我們的編程能力并鍛煉我們的編程思想。 課程體現(xiàn)了較強(qiáng)的應(yīng)用特色,把介紹內(nèi)容和實(shí)際英語有機(jī)的結(jié)合起來。這樣的實(shí)例即不太大,這樣程序不太長;同時(shí)實(shí)例又涉及一定的范圍和意義,通過實(shí)例能消化教程的主要內(nèi)容。未來解決用戶對(duì)Visual C+較高層的主要內(nèi)容需要, 在介紹有關(guān)基本知識(shí)后
25、加入一個(gè)小規(guī)模、可運(yùn)行的例子來消化、上機(jī)實(shí)驗(yàn),以供用戶模仿。 實(shí)驗(yàn)內(nèi)容是對(duì)教程內(nèi)容的實(shí)訓(xùn),并且在教程的內(nèi)容上進(jìn)一步提高。實(shí)習(xí)從一個(gè)應(yīng)用系統(tǒng)開始逐步設(shè)計(jì)和組裝,并且把Visual C+的基本內(nèi)容包含進(jìn)來。通過實(shí)驗(yàn)和實(shí)習(xí)實(shí)訓(xùn),能輕松自如地用Visual C+設(shè)計(jì)一個(gè)小的應(yīng)用系統(tǒng)。 九.參考文獻(xiàn) 1.Visual C+ 教程 清華大學(xué)出版社 鄭阿奇主編 2.Visual C+ 實(shí)訓(xùn) 清華大學(xué)出版社 鄭阿奇主編 丁有和編著 3.Visual C+ 6.0編程經(jīng)典案例精解 電子工業(yè)出版社 張紅軍 21 黨留群 趙天臣 等編著 附部分程序代碼: #include stdafx.h #include Med
26、ia Player.h #include Media PlayerDlg.h #include activemovie3.h #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE = _FILE_; #endif / / CAboutDlg dialog used for App About class CAboutDlg : public CDialog 22 public: CAboutDlg(); / Dialog Data /AFX_DATA(CAboutDlg) enum IDD = ID
27、D_ABOUTBOX ; /AFX_DATA / ClassWizard generated virtual function overrides /AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support /AFX_VIRTUAL / Implementation protected: /AFX_MSG(CAboutDlg) /AFX_MSG DECLARE_MESSAGE_MAP() private: 23 bool isRepeat; ; CAb
28、outDlg:CAboutDlg() : CDialog(CAboutDlg:IDD) /AFX_DATA_INIT(CAboutDlg) /AFX_DATA_INIT void CAboutDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CAboutDlg) /AFX_DATA_MAP BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) /AFX_MSG_MAP(CAboutDlg) / No message handlers 24 /AFX_MSG_M
29、AP END_MESSAGE_MAP() / / CMediaPlayerDlg dialog CMediaPlayerDlg:CMediaPlayerDlg(CWnd* pParent /*=NULL*/) : CDialog(CMediaPlayerDlg:IDD, pParent) /AFX_DATA_INIT(CMediaPlayerDlg) / NOTE: the ClassWizard will add member initialization here /AFX_DATA_INIT / Note that LoadIcon does not require a subseque
30、nt DestroyIcon in Win32 m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME); void 25 CMediaPlayerDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CMediaPlayerDlg) DDX_Control(pDX, IDC_ACTIVEMOVIECONTROL1, m_ActiveMovie); /AFX_DATA_MAP BEGIN_MESSAGE_MAP(CMediaPlayerDlg, CDi
31、alog) /AFX_MSG_MAP(CMediaPlayerDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_PLAY, OnPlay) ON_BN_CLICKED(IDC_OPEN, OnOpen) ON_BN_CLICKED(IDC_PAUSE, OnPause) ON_BN_CLICKED(IDC_ONSTOP, OnOnstop) ON_BN_CLICKED(IDC_LOWER, OnLower) ON_BN_CLICKED(IDC_UPPER, OnUpper) 26 ON_B
32、N_CLICKED(IDC_FULLSCREEN, OnFullscreen) ON_BN_CLICKED(IDC_REPEAT, OnRepeat) ON_BN_CLICKED(IDC_CLOSE, OnClose) ON_WM_TIMER() ON_BN_CLICKED(IDC_FAST, OnFast) ON_BN_CLICKED(IDC_SLOW, OnSlow) / ON_BN_CLICKED(IDC_FRONT, OnFront) / ON_BN_CLICKED(IDC_BEHIND, OnBehind) /AFX_MSG_MAP END_MESSAGE_MAP() / / CMe
33、diaPlayerDlg message handlers BOOL CMediaPlayerDlg:OnInitDialog() CDialog:OnInitDialog(); isRepeat=FALSE; 27 / Add About. menu item to system menu. / IDM_ABOUTBOX must be in the system command range. ASSERT(IDM_ABOUTBOX = 0xFFF0) & IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR); pSysMen
34、u-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); 28 / 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 / TODO: Add extra initialization here ret
35、urn TRUE; / return TRUE unless you set the focus to a control void CMediaPlayerDlg:OnSysCommand(UINT nID, LPARAM lParam) if (nID & 0xFFF0) = IDM_ABOUTBOX) 29 CAboutDlg dlgAbout; dlgAbout.DoModal(); else CDialog:OnSysCommand(nID, lParam); / If you add a minimize button to your dialog, you will need t
36、he code below / to draw the icon. For MFC applications using the document/view model, / this is automatically done for you by the framework. void CMediaPlayerDlg:OnPaint() if (IsIconic() CPaintDC dc(this); / device context for painting 30 SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
37、/ Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); = int cyIcon GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); 2; / 1) (rect.Width() int x = - cxIcon + int y = (rect.Height() - cyIcon + 1) / 2; / Draw the icon dc.DrawIcon(x, y, m_hIcon); else CDialog:OnPaint(
38、); 31 / The system calls this to obtain the cursor to display while the user drags / the minimized window. HCURSOR CMediaPlayerDlg:OnQueryDragIcon() return (HCURSOR) m_hIcon; void CMediaPlayerDlg:OnPlay() m_ActiveMovie.Run();/播放文件 SetTimer(0,20,NULL); CString PathName =m_ActiveMovie.GetFileName(); 1
39、; + strLength int = PathName.GetLength() char *pValue = new charstrLength; strncpy(pValue, PathName, strLength); 32 SetWindowText(pValue); /TODO: Add your control notification handler code here void CMediaPlayerDlg:OnOpen() char szFileFilter= Mp3 File(*.mp3)|*.mp3| Wma File(*.wma)|*.wma| Video File(
40、*.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 dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFil 33 eFilter); if(dlg.DoModal()=IDOK) CString Pat
41、hName=dlg.GetPathName(); PathName.MakeUpper(); m_ActiveMovie.SetFileName(PathName); / TODO: Add your control notification handler code here void CMediaPlayerDlg:OnPause() m_ActiveMovie.Pause(); / TODO: Add your control notification handler code here 34 void CMediaPlayerDlg:OnOnstop() m_ActiveMovie.S
42、top();/停止播放文件 KillTimer(0);/關(guān)掉定時(shí)器 / TODO: Add your control notification handler code here void CMediaPlayerDlg:OnLower() long Volume=m_ActiveMovie.GetVolume(); m_ActiveMovie.Pause() ; m_ActiveMovie.SetVolume(Volume-100) ; m_ActiveMovie.Run() ; / TODO: Add your control notification 35 handler code here void CMediaPlayerDlg:O
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 吊車勞務(wù)合同范例
- 雕塑制作雕塑設(shè)計(jì)合同范本
- 貸款服務(wù)費(fèi)合同范本
- 廠區(qū)綠化垃圾清運(yùn)合同范本
- 燈光設(shè)備短期租賃合同
- 十廉租房合同范本
- 公寓軟裝租房合同范本
- 廠房收購定金合同范本
- 單位與保安合同范例
- 醫(yī)療耗材服務(wù)合同范本
- 全套橋梁施工技術(shù)交底記錄
- 《教師職業(yè)道德》全書word版
- 城市定制型商業(yè)醫(yī)療保險(xiǎn)(惠民保)知識(shí)圖譜
- GB∕T 3836.31-2021 爆炸性環(huán)境 第31部分:由防粉塵點(diǎn)燃外殼“t”保護(hù)的設(shè)備
- AMDAR資料的分析和應(yīng)用
- 橋梁缺陷與預(yù)防
- 新蘇教版小學(xué)科學(xué)三年級(jí)下冊全冊教案(2022年春修訂)
- 弗洛姆異化理論
- AQL抽樣標(biāo)準(zhǔn)表xls2
- 人力資源部經(jīng)理崗位說明書
- [康熙字典9畫五行屬金的字加解釋] 康熙字典五行屬金的字
評(píng)論
0/150
提交評(píng)論