版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 武漢大學珞珈學院</b></p><p> 多媒體技術 課 程 設 計 </p><p> 題 目 MP3播放器的設計 </p><p> 系 (部) 計算機科學與技術系 </p><p> 班 級
2、 </p><p> 姓 名 </p><p> 學 號 </p><p> 指導教師 </p><p> 2010 年 7 月 12 日至 7 月 16 日 共 1 周<
3、;/p><p> 2010年 7 月 16 日</p><p> 面向對象程序設計 課程設計任務書</p><p><b> 注:可以附頁</b></p><p><b> 課程設計成績評定表</b></p><p><b> 1 引言</b>&l
4、t;/p><p> MP3播放器的設計是利用MFC應用程序、媒體控制接口MIC的基本知識而設計的。</p><p><b> 1.1 MFC簡介</b></p><p> MFC是Visual C++是核心。MFC類庫將所有圖形用戶界面的元素如窗口、菜單和按鈕等都以類的形式進行了封裝,MFC AppWizard向導根據(jù)繼承性利用MFC派生出自
5、己的類,并對Windows應用程序進行了分解,利用MFC派生類對應用程序重新進行組裝,同時還規(guī)定了應用程序中各個MFC派生類對象之間的相互聯(lián)系,實現(xiàn)了標準Windows應用程序的功能,這就是向導生成的所謂MFC應用程序框架。每個MFC類都包括了一些函數(shù),函數(shù)放到類中,符合C++編程方法。這些函數(shù),必須通過類定義對象才能使用[1]。</p><p><b> 1.2 MCI簡介</b><
6、;/p><p> MCI(Media Control Interface)媒體控制接口是MircroSoft提供的一組多媒體設備和文件的標準接口,它的好處是可以方便地控制絕大多數(shù)多媒體設備包括音頻、視頻、影碟、錄像等多媒體設備,而不需要知道它們的內部工作狀況。它所支持的媒體格式包括avi、wav、mpeg等等[2]。</p><p> 音頻技術發(fā)展較早,幾年前一些技術已經(jīng)成熟并產品化,音頻
7、技術主要包括四個方面:音頻數(shù)字化、語音處理、語音合成及語音識別。</p><p> 音頻文件包括多種格式的文件,MP3就是其中的一種。MP3的全稱是Moving Picture Experts Group,Audio Layer Ⅲ,它所使用的技術是在VCD(MPEG-1)的音頻壓縮技術上發(fā)展出的第三代,而不是MPEG-3。MP3是一種音頻壓縮的國際技術標準,它一般需要MP3播放器來讀取。</p>
8、<p><b> 2 總體設計</b></p><p><b> 2.1 實現(xiàn)功能</b></p><p> MP3播放器主要對常用Windows音頻格式的文件實現(xiàn)播放控制:播放歌曲、暫停播放、停止播放等;實現(xiàn)音量控制:靜音、聲音放大以及聲音減小的功能[3]。</p><p><b> 2.2
9、 功能模塊圖</b></p><p> 圖2-1 系統(tǒng)功能模塊圖</p><p><b> 3 詳細設計</b></p><p> 3.1 界面布局設計</p><p> (1) 創(chuàng)建一個對話框類,類名為Mp3PlayerDlg。</p><p> (2) 向對話框中添加Gr
10、oup Box控件、Static Text控件以及按鈕控件。</p><p> (3) 設置所添加的控件的屬性。</p><p> 系統(tǒng)界面的運行結果圖如圖3-1所示。</p><p> 圖3-1 系統(tǒng)界面運行結果圖</p><p> Mp3Player對話框中所用控件的屬性描述如表3-1所示。</p><p>
11、; 表3-1 對話框控件ID及其描述</p><p> 3.2 各模塊功能設計</p><p> 3.2.1 處理“打開”按鈕</p><p> 單擊“打開”按鈕后,在OnButtonOpen()函數(shù)中,首先對文件類型進行過濾,調用DoModa()函數(shù)打開對話框選擇一個媒體文件,通過GetPathName()函數(shù)獲取文件路徑,通過GetFileName()函
12、數(shù)獲取文件名后,調用DisplayInfo()函數(shù)在Static Text控件上顯示“你選擇的歌曲是(文件名)”,然后利用GetDlgItem()函數(shù)設置“暫?!卑粹o以及“停止”按鈕不可用。 </p><p> 3.2.2 處理“播放”按鈕</p><p> 單擊“播放”按鈕后,在OnButtonPlay()函數(shù)中,通過調用MCIMP3類的MCIOpen()函數(shù)獲取剛才選擇的文件路徑以
13、及文件名,調用該類的MCIPlay()函數(shù)播放歌曲,此時調用DisplayInfo()函數(shù)在Static Text控件上顯示“正在播放的歌曲是(文件名)”,進行歌曲的播放,然后利用GetDlgItem()函數(shù)設置“播放”按鈕不可用。</p><p> 3.2.3 處理“暫?!卑粹o</p><p> 單擊“暫停”按鈕后,在OnButtonPause()函數(shù)中,首先通過調用MCIMP3類的
14、MCIPause()函數(shù)暫停正在播放的歌曲,然后調用DisplayInfo()函數(shù)在Static Text控件上顯示“暫停播放歌曲(文件名)”,此時的歌曲處于暫停時的進度上,利用GetDlgItem()函數(shù)設置“播放”按鈕可用。</p><p> 3.2.4 處理“停止”按鈕</p><p> 單擊“停止”按鈕后,在OnButtonStop()函數(shù)中,首先通過調用MCIMP3類的MCI
15、Pause()函數(shù)停止正在播放的歌曲,然后調用DisplayInfo()函數(shù)在Static Text控件上顯示“停止播放歌曲(文件名)”,將停止正在播放歌曲,利用GetDlgItem()函數(shù)設置“暫?!卑粹o和“停止”按鈕不可用。</p><p> 3.2.5 處理“音量”按鈕</p><p> 單擊“音量”按鈕后,在OnButtonVolume()函數(shù)中,首先調用WinExec()函數(shù)
16、并且打開C:/WINDOWS/System32/sndvol32.exe,彈出“主音量”對話框,在此對話框內可以對音量進行增大或減小以及靜音的設置。</p><p> 3.2.6 處理“退出”按鈕</p><p> 單擊“退出”按鈕后,在OnButtonQuit()函數(shù)中,調用CDialog類的OnCancel()函數(shù)將退出對話框,結束程序的運行。</p><p&g
17、t;<b> 4 總結</b></p><p> 經(jīng)過一周的面向對象程序課程設計,我學到了很多。在這一周的實際動手學習中,我對VC++這門課程有了更深刻的認識,掌握了用MFC創(chuàng)建基于對話框的應用程序,同時了解了MCI相關知識。這次課程設計我做了MP3播放器的設計,MP3播放器主要對常用Windows音頻格式的文件實現(xiàn)播放控制:播放歌曲、暫停播放、停止播放等;實現(xiàn)音量控制:靜音、聲音放大以
18、及聲音減小的功能。</p><p> 本次課程設計中雖然可以實現(xiàn)播放、暫停、停止以及音量等功能,但仍然存在著放多不足,比如列表管理的功能以及循環(huán)播放功能始終無法實現(xiàn),如果有時間一定會好好研究。</p><p> 課設是辛苦勞累的,但是收獲同樣是巨大的,在課設中每解決一個問題,那種成就感是無法言語的,課設中第一次調試程序時出現(xiàn)了邏輯錯誤,編譯能通過,運行始終無法通過,后來經(jīng)過思考,進行了
19、多次修改調試之后得到了運行結果,雖然以前在程序中未曾見到過,但是經(jīng)過改正調試最終達到了目的。像此類的問題還有很多,不過經(jīng)過查詢資料,咨詢老師,與同學探討最終得到了理想的程序。</p><p><b> 參考文獻</b></p><p> [1] 王育堅.Visual C++面向對象編程教程.第2版.北京:清華大學出版社,2008</p><p&
20、gt; [2] 侯俊杰.深入淺出MFC.第2版.廣東:南方出版社,2007</p><p> [3] 嚴華峰等.Visual C++課程設計案例精編.北京:中國水利水電出版社,2004</p><p> [4] 王維玉等.Visual C++高級編程技術精粹.北京:科學出版社,2008</p><p><b> 附錄</b></p
21、><p> BOOL CMp3PlayerDlg::OnInitDialog() //初始化</p><p><b> {</b></p><p> CDialog::OnInitDialog();</p><p> // Add "About..." menu item to system m
22、enu.</p><p> // IDM_ABOUTBOX must be in the system command range.</p><p> ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);</p><p> ASSERT(IDM_ABOUTBOX < 0xF000);</p>
23、<p> CMenu* pSysMenu = GetSystemMenu(FALSE);</p><p> if (pSysMenu != NULL)</p><p><b> {</b></p><p> CString strAboutMenu;</p><p> strAboutMenu.L
24、oadString(IDS_ABOUTBOX);</p><p> if (!strAboutMenu.IsEmpty())</p><p><b> {</b></p><p> pSysMenu->AppendMenu(MF_SEPARATOR);</p><p> pSysMenu->Appen
25、dMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);</p><p><b> }</b></p><p><b> }</b></p><p> // Set the icon for this dialog. The framework does this automati
26、cally</p><p> // when the application's main window is not a dialog</p><p> SetIcon(m_hIcon, TRUE);// Set big icon</p><p> SetIcon(m_hIcon, FALSE);// Set small icon<
27、/p><p> // TODO: Add extra initialization here</p><p> DisplayInfo(0,_T("歡迎使用Mp3Player!"),_T(""));</p><p> GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(FALSE);&
28、lt;/p><p> GetDlgItem(IDC_BUTTON_PAUSE)->EnableWindow(FALSE);</p><p> GetDlgItem(IDC_BUTTON_STOP)->EnableWindow(FALSE);</p><p> return TRUE; // return TRUE unless you set th
29、e focus to a control</p><p><b> }</b></p><p> void CMp3PlayerDlg::OnButtonOpen() //打開</p><p><b> {</b></p><p> // TODO: Add your control
30、notification handler code here</p><p> char szFileFilter[]="All Music Files(*.*)|*.*||"; </p><p> CFileDialog FileOpenDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter/*, this*/);<
31、/p><p> if( FileOpenDlg.DoModal() == IDOK )</p><p><b> {</b></p><p> m_csPathName = FileOpenDlg.GetPathName();</p><p> m_csSongName = FileOpenDlg.GetFileNa
32、me();</p><p> DisplayInfo(1,_T("你選擇的歌曲是:"),m_csSongName);</p><p> m_bIsOpened = TRUE;</p><p> m_bIsNoSelectFile = FALSE;</p><p><b> }</b><
33、/p><p><b> else</b></p><p><b> {</b></p><p> m_bIsNoSelectFile = TRUE;</p><p><b> }</b></p><p> if (m_bIsOpened &
34、& m_mcimp3.MCIIsPlaying())</p><p><b> {</b></p><p> m_mcimp3.MCIClose();</p><p> m_mcimp3.MCIStop();</p><p><b> }</b></p><p
35、> if (m_bIsOpened && m_mcimp3.MCIIsPlaying() </p><p> && m_bIsNoSelectFile)</p><p><b> {</b></p><p> m_mcimp3.MCIResume();</p><p>&
36、lt;b> }</b></p><p> if (m_bIsOpened && m_bIsPressPauseBtn)</p><p><b> {</b></p><p> m_bIsPauseOpen = TRUE;</p><p><b> }</b>
37、;</p><p> BOOL bIsPlayBtnEnabled = GetDlgItem(IDC_BUTTON_PLAY)->IsWindowEnabled();</p><p> if (!bIsPlayBtnEnabled)</p><p><b> {</b></p><p> GetDlgIte
38、m(IDC_BUTTON_PLAY)->EnableWindow(TRUE);</p><p><b> }</b></p><p><b> }</b></p><p> void CMp3PlayerDlg::OnButtonPlay() //播放</p><p><b
39、> {</b></p><p> // TODO: Add your control notification handler code here</p><p> if (m_bIsPauseOpen)</p><p><b> {</b></p><p> if (m_bIsNoSe
40、lectFile)</p><p><b> {</b></p><p> m_mcimp3.MCIResume();</p><p> DisplayInfo(1,_T("繼續(xù)播放歌曲:"),m_csSongName);</p><p> m_bIsPressPauseBtn = FALSE
41、;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> m_mcimp3.MCIOpen(m_csPathName);</p><p> m_mcimp3.M
42、CIPlay();</p><p> DisplayInfo(1,_T("正在播放的歌曲是:"),m_csSongName);</p><p> GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(FALSE);</p><p> m_bIsNoSelectFile = TRUE;</p&
43、gt;<p><b> }</b></p><p><b> }</b></p><p> else if (m_bIsOpened && m_bIsPressPauseBtn)</p><p><b> {</b></p><p> m
44、_mcimp3.MCIPlay();</p><p> DisplayInfo(1,_T("繼續(xù)播放歌曲:"),m_csSongName);</p><p> m_bIsPressPauseBtn = FALSE;</p><p> GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(FALSE);&l
45、t;/p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if (m_bIsNoSelectFile)</p><p><b> {</b>&l
46、t;/p><p> DisplayInfo(0,_T("你還沒有選擇歌曲,點擊播放沒有意義!"),_T(""));</p><p><b> return;</b></p><p><b> }</b></p><p> m_mcimp3.MCIOpen(
47、m_csPathName);</p><p> m_mcimp3.MCIGetLength(&m_dwLen);</p><p> m_mcimp3.MCIPlay();</p><p> SetTimer(1, 1000, NULL);</p><p> DisplayInfo(1,_T("正在播放的歌曲是:&q
48、uot;),m_csSongName);</p><p> m_bIsPressStopBtn = FALSE;</p><p> GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(FALSE);</p><p><b> } </b></p><p> BOOL bIsP
49、auseBtnEnabled = GetDlgItem(IDC_BUTTON_PAUSE)->IsWindowEnabled();</p><p> if (!bIsPauseBtnEnabled)</p><p><b> {</b></p><p> GetDlgItem(IDC_BUTTON_PAUSE)->Enable
50、Window(TRUE);</p><p><b> }</b></p><p> BOOL bIsStopBtnEnabled = GetDlgItem(IDC_BUTTON_STOP)->IsWindowEnabled();</p><p> if (!bIsStopBtnEnabled)</p><p>
51、;<b> {</b></p><p> GetDlgItem(IDC_BUTTON_STOP)->EnableWindow(TRUE);</p><p><b> }</b></p><p><b> }</b></p><p> void CMp3Playe
52、rDlg::OnButtonPause() //暫停</p><p><b> {</b></p><p> // TODO: Add your control notification handler code here</p><p> BOOL bIsPlaying = m_mcimp3.MCIIsPlaying();
53、</p><p> if (bIsPlaying)</p><p><b> {</b></p><p> m_mcimp3.MCIPause();</p><p> DisplayInfo(1,_T("暫停播放歌曲:"),m_csSongName);</p><p>
54、 m_bIsPressPauseBtn = TRUE;</p><p><b> }</b></p><p> BOOL bIsPlayBtnEnabled = GetDlgItem(IDC_BUTTON_PLAY)->IsWindowEnabled();</p><p> if (!bIsPlayBtnEnabled)</
55、p><p><b> {</b></p><p> GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(TRUE);</p><p><b> }</b></p><p><b> }</b></p><p>
56、 void CMp3PlayerDlg::OnButtonStop() //停止</p><p><b> {</b></p><p> // TODO: Add your control notification handler code here</p><p> if (m_mcimp3.MCIStop()==0)//
57、停止播放</p><p><b> {</b></p><p> m_bIsPressStopBtn = TRUE;</p><p> m_bIsPressPauseBtn = FALSE;</p><p> GetDlgItem(IDC_BUTTON_STOP)->EnableWindow(FALSE)
58、;</p><p> DisplayInfo(1,_T("停止播放歌曲:"),m_csSongName);</p><p> m_mcimp3.MCIClose();</p><p> GetDlgItem(IDC_BUTTON_PAUSE)->EnableWindow(FALSE);</p><p><
59、b> }</b></p><p> BOOL bIsPlayBtnEnabled = GetDlgItem(IDC_BUTTON_PLAY)->IsWindowEnabled();</p><p> if (!bIsPlayBtnEnabled)</p><p><b> {</b></p><
60、;p> GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(TRUE);</p><p><b> }</b></p><p><b> }</b></p><p> void CMp3PlayerDlg::OnButtonQuit() //退出</p&
61、gt;<p><b> {</b></p><p> // TODO: Add your control notification handler code here</p><p> CDialog::OnCancel();</p><p><b> }</b></p><p&g
62、t; void CMp3PlayerDlg::OnButtonVolume() //音量</p><p><b> {</b></p><p> // TODO: Add your control notification handler code here</p><p> WinExec( "C:\\WINDOW
63、S\\System32\\sndvol32.exe", SW_NORMAL );</p><p><b> }</b></p><p> void CMp3PlayerDlg::DisplayInfo(bool bOPInfo,CString csInfo,CString csSongName)</p><p><b>
64、; {</b></p><p> if (!bOPInfo)</p><p><b> {</b></p><p> m_csInfo = csInfo;</p><p><b> }</b></p><p><b> else</b&
65、gt;</p><p><b> {</b></p><p> m_csInfo = csInfo;</p><p> m_csInfo += csSongName;</p><p><b> }</b></p><p> GetDlgItem(IDC_STATIC
66、_INFO)->SetWindowText(m_csInfo);</p><p><b> }</b></p><p> void CMp3PlayerDlg::OnTimer(UINT nIDEvent) </p><p><b> {</b></p><p> // TODO: A
67、dd your message handler code here and/or call default</p><p> if ( nIDEvent == 1)</p><p><b> {</b></p><p> if ( 0 == m_dwLen )</p><p><b> {</
68、b></p><p> KillTimer(1);</p><p> DisplayInfo(1,_T("已經(jīng)播放完歌曲:"),m_csSongName); </p><p> GetDlgItem(IDC_BUTTON_PAUSE)->EnableWindow(FALSE);</p><p> Ge
69、tDlgItem(IDC_BUTTON_STOP)->EnableWindow(FALSE);</p><p><b> return;</b></p><p><b> }</b></p><p> m_dwLen--;</p><p><b> }</b>&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- vc課程設計--多媒體播放器
- 基于mp3播放器的設計
- mp3音樂播放器軟件課程設計報告(mfc)
- 電子綜合課程設計報告--基于arm+linux的mp3播放器
- 基于dsp的mp3播放器設計
- mp3播放器設計設計
- 硬件課程設計-基于fpga的mp3音樂播放器說明書
- dsp數(shù)字信號處理課程設計--基于dsp的mp3播放器設計
- dsp數(shù)字信號處理課程設計報告--基于dsp的mp3播放器設計
- 單片機課程設計--基于陀螺儀的智能mp3播放器
- 基于fpga的mp3音樂播放器設計
- 基于ZSP的MP3播放器SoC設計.pdf
- 基于vb的個性播放器課程設計
- 基于linux的mp3播放器設計與實現(xiàn)
- 音樂播放器課程設計
- 基于dsp的多功能mp3播放器設計
- 基于arm的mp3播放器設計與實現(xiàn)
- 基于java的mp3播放器設計與實現(xiàn)
- 基于android的mp3播放器的設計與實現(xiàn)
- 音樂播放器課程設計 (2)
評論
0/150
提交評論