2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  綜合程序 課程設(shè)計(jì)說明書</p><p>  課程設(shè)計(jì)名稱: 綜合程序課程設(shè)計(jì) </p><p>  課程設(shè)計(jì)題目: 音頻播放程序的設(shè)計(jì)與實(shí)現(xiàn) </p><p>  學(xué) 院 名 稱: 信息工程學(xué)院 </p><p>  專業(yè):電子信息工程

2、 班級(jí): </p><p>  學(xué)號(hào): 姓名: </p><p>  評(píng)分: 教師: </p><p>  20 12 年 月 日</p><p>  綜合程序 課程設(shè)計(jì)任務(wù)書&l

3、t;/p><p>  20 14 -20 15學(xué)年 第 2 學(xué)期  第 1 周- 2周 </p><p>  注:1、此表一組一表二份,課程設(shè)計(jì)小組組長一份;任課教師授課時(shí)自帶一份備查。</p><p>  2、課程設(shè)計(jì)結(jié)束后與“課程設(shè)計(jì)小結(jié)”、“學(xué)生成績單”一并交院教務(wù)存檔。</p><p><b>  摘要</b>&l

4、t;/p><p>  隨著現(xiàn)今科學(xué)技術(shù)的發(fā)展,人們生活水平的提高,娛樂已必不可少,人們通過音樂陶冶情操,放松自己,這大大促進(jìn)了媒體軟件的發(fā)展.而mp3作為一種小巧,具有良好的音頻解碼能力,成為了最為廣泛使用的音頻格式。而軟件市場(chǎng)的媒體播放器有很多,如酷狗音樂。目前常見的多媒體軟件應(yīng)該說各有特色,但是幾乎每一個(gè)都存在著不如人意的地方。本課程設(shè)計(jì)所做的的播放器是基于MFC集成開發(fā)環(huán)境,利用系統(tǒng)的MCI(media

5、0;controller interface)命令接口來編程,具有體積小,支持的播放格式多、系統(tǒng)資源占用少、支持播放列表編輯。</p><p>  了解播放器的功能實(shí)現(xiàn),掌握播放器開發(fā)的相關(guān)技術(shù),同時(shí)利用軟件工程的相關(guān)理論知識(shí),了解軟件開發(fā)的方法與步驟</p><p>  關(guān)鍵字:音樂,MCI,播放器</p><p><b>  目錄</b

6、></p><p>  一 引言--------------------------------------------------------------------6</p><p>  1.1 MFC簡介-------------------------------------------------------------6</p><p>  1.2

7、 MCI簡介--------------------------------------------------------------6</p><p>  二 課程設(shè)計(jì)的目的與要求----------------------------------------------7</p><p>  2.1 目的----------------------------------------

8、-----------------------------7</p><p>  2.2 任務(wù)----------------------------------------------------------------------7</p><p>  三 課題的需求分析----------------------------------------------------------

9、7</p><p>  3.1 播放器的基本控制需求----------------------------------------7</p><p>  3.2 功能需求------------------------------------------------------------8</p><p>  四 概要設(shè)計(jì)--------------------

10、--------------------------------------------8</p><p>  五 詳細(xì)設(shè)計(jì)---------------------------------------------------------------9</p><p>  六 調(diào)試與測(cè)試分析--------------------------------------------------

11、--10</p><p>  七 用戶手冊(cè)--------------------------------------------------------------11</p><p>  八 結(jié)論---------------------------------------------------------------------11</p><p>  九

12、參考文獻(xiàn)--------------------------------------------------------------12</p><p>  十 附錄---------------------------------------------------------------------13</p><p><b>  正文</b></p>

13、<p><b>  一.引言</b></p><p>  MP3播放器的設(shè)計(jì)是利用MFC應(yīng)用程序、媒體控制接口MIC的基本知識(shí)而設(shè)計(jì)的。</p><p><b>  1.1 MFC簡介</b></p><p>  MFC是Visual C++是核心。MFC(MicrosoftFoundationClasses

14、)是微軟基礎(chǔ)類庫的簡稱,是微軟公司實(shí)現(xiàn)的一個(gè)c++類庫, MFC類庫將所有圖形用戶界面的元素如窗口、菜單和按鈕等都以類的形式進(jìn)行了封裝,MFC AppWizard向?qū)Ц鶕?jù)繼承性利用MFC派生出自己的類,并對(duì)Windows應(yīng)用程序進(jìn)行了分解,利用MFC派生類對(duì)應(yīng)用程序重新進(jìn)行組裝,同時(shí)還規(guī)定了應(yīng)用程序中各個(gè)MFC派生類對(duì)象之間的相互聯(lián)系,實(shí)現(xiàn)了標(biāo)準(zhǔn)Windows應(yīng)用程序的功能,這就是向?qū)傻乃^MFC應(yīng)用程序框架。這樣就可以專心的考慮程

15、序的邏輯,而不是這些每次編程都要重復(fù)的東西。</p><p><b>  1.2 MCI簡介</b></p><p>  MCI是一種接口,MCI是我們只需要使用MCI函數(shù)而不必考慮具體的多媒體設(shè)備,它的好處是可以方便地控制絕大多數(shù)多媒體設(shè)備包括音頻、視頻、影碟、錄像等多媒體設(shè)備,而不需要知道它們的內(nèi)部工作狀況。它所支持的媒體格式包括mp3、avi、wav、mpeg等

16、等[2]。這樣程序員不再需要關(guān)心具體設(shè)備的差異,就可以對(duì)激光唱機(jī)(CD)、視盤機(jī)、波形音頻設(shè)備、視頻播放設(shè)備和MIDI設(shè)備等媒體設(shè)備進(jìn)行控制。應(yīng)用程序通過MCI發(fā)送相應(yīng)的命令來控制媒體設(shè)備。MCI分為命令字符串和命令消息兩種,兩者具有類似的功能。命令字符串具有使用簡單的特點(diǎn),但是它的執(zhí)行效率略低于命令消息。</p><p>  二.課程設(shè)計(jì)的目的與要求</p><p><b> 

17、 2.1 目的</b></p><p>  利用VC++開發(fā)一個(gè)支持wav、mp3、wma等不同音頻格式的媒體播放器。通過課程設(shè)計(jì)掌握多媒體編程的基本原理。</p><p><b>  2.2 任務(wù)</b></p><p>  編程實(shí)現(xiàn)一個(gè)可支持多種音頻格式的媒體播放器,其基本功能包括媒體播放、音量調(diào)節(jié)、播放進(jìn)度選擇、暫停、停止以及

18、歌曲信息的查詢與添加等;</p><p>  給出程序的總體設(shè)計(jì)和詳細(xì)設(shè)計(jì),要求程序總體架構(gòu)圖、詳細(xì)設(shè)計(jì)的流程圖,函數(shù)、變量說明等</p><p>  給出程序運(yùn)行、測(cè)試的詳細(xì)結(jié)果。</p><p>  三.課題的需求分析(數(shù)據(jù)流圖、數(shù)據(jù)字典)</p><p>  分析軟件設(shè)計(jì)的目標(biāo)和任務(wù),確定軟件功能和性能需求。</p>&l

19、t;p>  軟件需求是指用戶對(duì)目標(biāo)軟件系統(tǒng)在功能、性能、行為、設(shè)計(jì)約束等方面的期望。需求分析就是通過對(duì)應(yīng)用問題及其壞境的分析與理解采用一系列的分析方法和技術(shù)將用戶的需求逐步精確化、完全化、一致化,最終形成需求規(guī)模說明文檔的過程。</p><p>  3.1 播放器的基本控制需求</p><p>  在著手開發(fā)系統(tǒng)之前首先要明確該系統(tǒng)應(yīng)該實(shí)現(xiàn)的一些最基本的功能,然后逐步細(xì)化,為每個(gè)功能

20、創(chuàng)建一個(gè)模塊,再對(duì)各個(gè)模塊進(jìn)行開發(fā)。通過分析我們得出一款音樂播放器的基本控制如圖(1)所示:</p><p>  圖(1):音樂的基本控制</p><p><b>  3.2 功能需求</b></p><p>  功能需求規(guī)定開發(fā)人員必須在產(chǎn)品中實(shí)現(xiàn)的軟件功能,用戶利用這些功能來完成任務(wù),滿足業(yè)務(wù)需求。功能需求有時(shí)也被稱作行為需求 (behav

21、ioral requirement),因?yàn)榱?xí)慣上總是用“應(yīng)該”對(duì)其進(jìn)行描述。功能需求描述開發(fā)人員需要實(shí)現(xiàn)什么。</p><p>  本次課程設(shè)計(jì)要求當(dāng)用戶啟動(dòng)程序進(jìn)入主界面,用戶可以通過添加模塊添加本地歌曲。通過播放列表用戶可以實(shí)現(xiàn)對(duì)歌曲的查找、播放、暫停、音量調(diào)節(jié)、靜音。通過總結(jié)我們知道其功能模塊時(shí)序圖如下圖(2)所示:</p><p>  圖(2):音頻播放器的功能需求</p&g

22、t;<p>  四.概要設(shè)計(jì)(系統(tǒng)層次結(jié)構(gòu)圖)</p><p>  概要設(shè)計(jì)定義軟件各主要成份之間的關(guān)系。</p><p>  在需求明確、準(zhǔn)備開始編碼之前,要做概要設(shè)計(jì)。設(shè)計(jì)軟件結(jié)構(gòu)的具體任務(wù)是:將一個(gè)復(fù)雜系統(tǒng)按功能進(jìn)行模塊劃分、建立模塊的層次結(jié)構(gòu)及調(diào)用關(guān)系、確定模塊間的接口及人機(jī)界面等。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)包括數(shù)據(jù)特征的描述、確定數(shù)據(jù)的結(jié)構(gòu)特性、以及數(shù)據(jù)庫的設(shè)計(jì)。本程序采用模塊化

23、軟件設(shè)計(jì),自頂向下逐層把軟件系統(tǒng)劃分成若干模塊。每個(gè)模塊完成一個(gè)特定的功能,最后將所有模塊按照某種方法組合成一個(gè)整體,達(dá)到整個(gè)播放器所要求的功能。本次課程設(shè)計(jì)的系統(tǒng)結(jié)構(gòu)圖如圖(3)所示。 </p><p>  圖(3):系統(tǒng)的層次結(jié)構(gòu)圖</p><p>  五.詳細(xì)設(shè)計(jì)(程序流程圖)</p><p>  把軟件系統(tǒng)結(jié)構(gòu)成份轉(zhuǎn)換成軟件的過程性描述(算法),用程序流程圖

24、詳述主要事件的實(shí)現(xiàn)過程。然后進(jìn)行編碼-----根據(jù)這種過程性描述,編寫核心源代碼。</p><p>  本次課程設(shè)計(jì)所做音頻播放器不僅要實(shí)現(xiàn)對(duì)一些常見的音頻格式文件的播放,而且還要有友好的用戶界面。其設(shè)計(jì)目標(biāo)是:實(shí)現(xiàn)對(duì)多種音頻格式文件的播放,當(dāng)前播放曲目長度顯示,實(shí)現(xiàn)音量控制;播放器軟件占用系統(tǒng)資源少、運(yùn)行平臺(tái)要求不高、界面美觀舒適、操作簡單。</p><p>  主要?jiǎng)澐譃橐韵?個(gè)功能模

25、塊,每個(gè)功能模塊的作用描述如下:</p><p>  播放控制:控制歌曲的播放狀態(tài),如:播放、暫停、上一曲、下一曲。播放過的歌曲按播放順序排列在播放列表中,每次退出程序、重啟播放器后播放列表中的播放記錄會(huì)自動(dòng)保存不會(huì)清空。</p><p>  文件控制:主要用來打開本地播放文件。本音樂播放器支持常見音頻格式文件播放如:MP3、WMA、WAV等。還有對(duì)播放列表進(jìn)行控制如:打開文件所在目錄、移

26、除列表、刪除文件。</p><p>  進(jìn)度控制:顯示當(dāng)前歌曲的播放總時(shí)長和已播放時(shí)長,可以通過鼠標(biāo)調(diào)整歌曲的播放進(jìn)度,實(shí)現(xiàn)歌曲的跳躍式播放。其實(shí)現(xiàn)方式是通過進(jìn)度條和時(shí)間的同步顯示。</p><p>  聲音控制:調(diào)整歌曲音量的大小。</p><p><b>  界面布局設(shè)計(jì)</b></p><p>  (1) 創(chuàng)建一個(gè)

27、對(duì)話框類,類名為CMPlayerDlg。</p><p>  (2) 向?qū)υ捒蛑刑砑覩roup Box控件、Static Text控件以及按鈕控件。</p><p>  (3) 設(shè)置所添加的控件的屬性。</p><p>  系統(tǒng)界面的運(yùn)行結(jié)果如圖(4)所示。</p><p>  圖(4):系統(tǒng)界面的運(yùn)行結(jié)果圖</p><p

28、><b>  六.調(diào)試及測(cè)試分析</b></p><p>  在課程設(shè)計(jì)中,常常遇到許許多多的問題,例如有些非控件變量的聲明,這經(jīng)常導(dǎo)致程序運(yùn)行錯(cuò)誤。這就要在變量聲明處重新聲明變量,調(diào)試過程中要經(jīng)常使用在錯(cuò)誤區(qū)域設(shè)置斷點(diǎn)的方法來看看是否是是這段程序出了問題而不是,別的方面。</p><p><b>  七.用戶手冊(cè)</b></p>

29、;<p>  本次課設(shè)所設(shè)計(jì)的程序簡單,易用,跟大多數(shù)音頻軟件一樣。在啟動(dòng)程序是需要按添加音樂按鈕添加自己喜歡的音樂,然后選擇相應(yīng)的歌曲,模式,點(diǎn)擊播放,美妙的音樂就噴薄而出了,在主界面還可以進(jìn)行跳躍式聽歌,音量控制等各種操作。簡而言之此款軟件操作簡單,集小巧,易用于一身。</p><p><b>  八.結(jié)論</b></p><p>  經(jīng)過為期兩周的

30、綜合程序課程設(shè)計(jì),我學(xué)到了很多。我對(duì)VC++這門課程有了更深刻的認(rèn)識(shí),對(duì)用MFC創(chuàng)建基于對(duì)話框的應(yīng)用程序更加熟悉,同時(shí)了解了MCI相關(guān)知識(shí)。</p><p>  本次課程設(shè)計(jì)中雖然可以實(shí)現(xiàn)播放、暫停、停止、播放界面美化以及音量等功能,但仍然存在著放多不足,添加音樂列表后再次啟動(dòng)不能保留數(shù)據(jù)。</p><p>  課設(shè)中遇到了許多的困難,課設(shè)中第一次調(diào)試程序時(shí)出現(xiàn)了很多錯(cuò)誤,其中有邏輯錯(cuò)誤,

31、編譯能通過,運(yùn)行始終無法通過,后來經(jīng)過思考,進(jìn)行了多次修改調(diào)試之后得到了運(yùn)行結(jié)果;但還是存在兼容性問題,系統(tǒng)版本以及軟件的版本之間存在各種兼容性問題,這使我不知從何處檢查并改進(jìn),后來在老師的幫助下,意識(shí)到可能是兼容性的問題,結(jié)果換了臺(tái)電腦,經(jīng)過改正調(diào)試最終達(dá)到了目的。諸如此類的問題數(shù)不勝數(shù),不過經(jīng)過查詢資料,咨詢老師,與同學(xué)探討最終完成了這次課設(shè),成功的做出了音頻播放器。</p><p>  “書到用時(shí)方恨少”,

32、只是到要用的時(shí)候,才會(huì)覺得這句話是真理。以前玩的時(shí)候不覺得,只有真正做事時(shí),抓耳撓腮時(shí)才會(huì)覺得以前學(xué)的不夠好。雖然在設(shè)計(jì)的過程中,時(shí)常會(huì)碰到問題,有時(shí)是從網(wǎng)上搜索出解決方法,但是往往大多數(shù)百度也不能找到有效的解決辦法,這種時(shí)候,向同學(xué)老師請(qǐng)教,就會(huì)讓自己受益很多。 跟老師和同學(xué)的交流使我認(rèn)識(shí)的自己的更多不足,這些都是值得我改進(jìn)的。</p><p>  總的說來,此次軟件設(shè)計(jì),讓我深刻認(rèn)識(shí)的不足,以后會(huì)更

33、加努力。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 黃維通.Visual C++面向?qū)ο缶幊探坛?第三版.北京:清華大學(xué)出版社,2011</p><p>  [2] 侯俊杰.深入淺出MFC.第2版.廣東:南方出版社,2007</p><p>  [3] 嚴(yán)華峰等.Visual C++課程設(shè)

34、計(jì)案例精編.北京:中國水利水電出版社,2004</p><p>  [4] 王維玉等.Visual C++高級(jí)編程技術(shù)精粹.北京:科學(xué)出版社,2008</p><p>  [5]陳國建等.Visual C++范例開發(fā)大全.北京:清華大學(xué)出版社,2010</p><p><b>  九.附錄</b></p><p><

35、;b>  初始化程序</b></p><p>  // MPlayerDlg.cpp : 實(shí)現(xiàn)文件</p><p><b>  //</b></p><p>  #include "stdafx.h"</p><p>  #include "MPlayer.h"&

36、lt;/p><p>  #include "MPlayerDlg.h"</p><p>  #include "afxdialogex.h"</p><p>  #ifdef _DEBUG</p><p>  #define new DEBUG_NEW</p><p><b&g

37、t;  #endif</b></p><p>  // CMPlayerDlg 對(duì)話框</p><p>  CMPlayerDlg::CMPlayerDlg(CWnd* pParent /*=NULL*/)</p><p>  : CDialogEx(CMPlayerDlg::IDD, pParent)</p><p><b

38、>  {</b></p><p>  m_hIcon = AfxGetApp()->LoadIcon(MAKEINTRESOURCE(IDI_ICON));</p><p><b>  hour=0;</b></p><p><b>  minute=0;</b></p><p&

39、gt;<b>  second=0;</b></p><p><b>  cs=0;</b></p><p><b>  ch=0;</b></p><p><b>  cm=0;</b></p><p>  mode=SINGLE;</p>

40、<p><b>  }</b></p><p>  void CMPlayerDlg::DoDataExchange(CDataExchange* pDX)</p><p><b>  {</b></p><p>  CDialogEx::DoDataExchange(pDX);</p><

41、p>  DDX_Control(pDX, IDC_LIST, list);</p><p>  DDX_Control(pDX, IDC_SLIDER_VOL, vol);</p><p>  DDX_Control(pDX, IDC_SLIDER_TIME, process);</p><p><b>  }</b></p>

42、<p>  BEGIN_MESSAGE_MAP(CMPlayerDlg, CDialogEx)</p><p>  ON_WM_PAINT()</p><p>  ON_WM_QUERYDRAGICON()</p><p>  ON_WM_ERASEBKGND()</p><p>  ON_LBN_SELCHANGE(IDC_L

43、IST, &CMPlayerDlg::OnLbnSelchangeList)</p><p>  ON_BN_CLICKED(IDC_PLAY, &CMPlayerDlg::OnBnClickedPlay)</p><p>  ON_BN_CLICKED(IDC_ADD, &CMPlayerDlg::OnBnClickedAdd)</p><p&

44、gt;  ON_BN_CLICKED(IDC_PAUSE, &CMPlayerDlg::OnBnClickedPause)</p><p>  ON_BN_CLICKED(IDC_STOP, &CMPlayerDlg::OnBnClickedStop)</p><p>  ON_BN_CLICKED(IDC_DELETE, &CMPlayerDlg::OnBnCli

45、ckedDelete)</p><p>  ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_VOL, &CMPlayerDlg::OnCustomdrawSliderVol)</p><p>  ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_TIME, &CMPlayerDlg::OnCustomdrawSliderTime

46、)</p><p>  ON_WM_TIMER()</p><p>  ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_TIME, &CMPlayerDlg::OnReleasedcaptureSliderTime)</p><p>  ON_BN_CLICKED(IDC_BTN_NEXT, &CMPlayerDlg

47、::OnBnClickedBtnNext)</p><p>  ON_BN_CLICKED(IDC_BTN_BACK, &CMPlayerDlg::OnBnClickedBtnBack)</p><p>  ON_LBN_DBLCLK(IDC_LIST, &CMPlayerDlg::OnDblclkList)</p><p>  ON_BN_CLIC

48、KED(IDC_BTN_MODE, &CMPlayerDlg::OnBnClickedBtnMode)</p><p>  END_MESSAGE_MAP()</p><p>  // CMPlayerDlg 消息處理程序</p><p>  BOOL CMPlayerDlg::OnInitDialog()</p><p><b

49、>  {</b></p><p>  CDialogEx::OnInitDialog();</p><p>  // 設(shè)置此對(duì)話框的圖標(biāo)。當(dāng)應(yīng)用程序主窗口不是對(duì)話框時(shí),框架將自動(dòng)</p><p><b>  // 執(zhí)行此操作</b></p><p>  SetIcon(m_hIcon, TRUE);

50、// 設(shè)置大圖標(biāo)</p><p>  SetIcon(m_hIcon, FALSE);// 設(shè)置小圖標(biāo)</p><p>  // TODO: 在此添加額外的初始化代碼</p><p>  process.SetRange(0,100);</p><p>  vol.SetRange(0,1000);</p><p&

51、gt;  vol.SetPos(vol.GetRangeMax());</p><p>  CString temp;</p><p>  temp.Format(" %d:%d:%d / %d:%d:%d",ch,cm,cs,hour,minute,second);</p><p>  SetDlgItemText(IDC_STATIC_TIM

52、E,temp);</p><p>  return TRUE; // 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRUE</p><p><b>  }</b></p><p>  // 如果向?qū)υ捒蛱砑幼钚』粹o,則需要下面的代碼</p><p>  // 來繪制該圖標(biāo)。對(duì)于使用文檔/視圖模型的 MFC 應(yīng)用程序,</

53、p><p>  // 這將由框架自動(dòng)完成。</p><p><b>  播放程序</b></p><p>  void CMPlayerDlg::OnBnClickedPlay()</p><p><b>  {</b></p><p>  CString temp;</

54、p><p>  GetDlgItemText(IDC_PAUSE,temp);</p><p>  if(temp.Compare("繼續(xù)播放")==0)</p><p><b>  {</b></p><p>  SetDlgItemText(IDC_PAUSE,"暫停");<

55、/p><p><b>  }</b></p><p>  CString filename;</p><p>  int index=list.GetCurSel();</p><p>  if(index==-1)</p><p><b>  {</b></p>

56、<p>  MessageBox("請(qǐng)?zhí)砑踊蜻x擇");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  list.GetText(index,filename);</p><p>  SetDlgItemT

57、ext(IDC_FILENAME,filename);</p><p>  player.Stop();</p><p>  player.Open(m_hWnd,filename);</p><p>  player.Play();</p><p>  KillTimer(0);</p><p>  SetTimer

58、(0,1000,NULL);</p><p>  hour=minute=second=ch=cm=cs=0;</p><p>  temp.Format(" %d:%d:%d / %d:%d:%d",ch,cm,cs,hour,minute,second);</p><p>  SetDlgItemText(IDC_STATIC_TIME,te

59、mp);</p><p>  process.SetPos(0);</p><p>  // TODO: 在此添加控件通知處理程序代碼</p><p><b>  }</b></p><p><b>  添加音樂</b></p><p>  void CMPlayerDlg:

60、:OnBnClickedAdd()</p><p><b>  {</b></p><p>  char fliter[]="音樂文件(*.mp3;*.wma;*.wav)\0*.mp3;*.wma;*.wav\0"</p><p>  "所有文件(*.*)\0*.*\0\0";</p>&

61、lt;p>  CFileDialog fdlg(TRUE);</p><p>  fdlg.m_ofn.lpstrFilter=fliter;</p><p>  if(IDOK==fdlg.DoModal())</p><p><b>  {</b></p><p>  CString path=fdlg.Get

62、PathName();</p><p>  CString file=fdlg.GetFileName();</p><p>  list.InsertString(list.GetCount(),path);</p><p>  list.SetCurSel(list.GetCount()-1);</p><p><b>  }&

63、lt;/b></p><p>  // TODO: 在此添加控件通知處理程序代碼</p><p><b>  }</b></p><p><b>  暫停音樂</b></p><p>  void CMPlayerDlg::OnBnClickedPause()</p><p

64、><b>  {</b></p><p>  CString temp;</p><p>  GetDlgItemText(IDC_PAUSE,temp);</p><p>  if(temp.Compare("暫停")==0)</p><p><b>  {</b><

65、;/p><p>  player.Pause();</p><p>  SetDlgItemText(IDC_PAUSE,"繼續(xù)播放");</p><p>  KillTimer(0);</p><p><b>  }</b></p><p>  else if(temp.Comp

66、are("繼續(xù)播放")==0)</p><p><b>  {</b></p><p>  player.resume();</p><p>  SetDlgItemText(IDC_PAUSE,"暫停");</p><p>  SetTimer(0,1000,NULL);<

67、/p><p><b>  }</b></p><p>  // TODO: 在此添加控件通知處理程序代碼</p><p><b>  }</b></p><p><b>  停止</b></p><p>  void CMPlayerDlg::OnBnCli

68、ckedStop()</p><p><b>  {</b></p><p>  KillTimer(0);</p><p>  CString temp;</p><p>  GetDlgItemText(IDC_PAUSE,temp);</p><p>  if(temp.Compare(&q

69、uot;繼續(xù)播放")==0)</p><p><b>  {</b></p><p>  SetDlgItemText(IDC_PAUSE,"暫停");</p><p><b>  }</b></p><p>  player.Stop();</p>&l

70、t;p><b>  hour=0;</b></p><p><b>  minute=0;</b></p><p><b>  second=0;</b></p><p><b>  ch=0;</b></p><p><b>  cm=0

71、;</b></p><p><b>  cs=0;</b></p><p>  temp.Format(" %d:%d:%d / %d:%d:%d",ch,cm,cs,hour,minute,second);</p><p>  SetDlgItemText(IDC_STATIC_TIME,temp);</

72、p><p>  process.SetPos(0);</p><p>  // TODO: 在此添加控件通知處理程序代碼</p><p><b>  }</b></p><p><b>  刪除</b></p><p>  void CMPlayerDlg::OnBnClicke

73、dDelete()</p><p><b>  {</b></p><p>  list.DeleteString(list.GetCurSel());</p><p>  // TODO: 在此添加控件通知處理程序代碼</p><p><b>  }</b></p><p>

74、;<b>  滑動(dòng)音量控制</b></p><p>  void CMPlayerDlg::OnCustomdrawSliderVol(NMHDR *pNMHDR, LRESULT *pResult)</p><p><b>  {</b></p><p>  LPNMCUSTOMDRAW pNMCD = reinterp

75、ret_cast<LPNMCUSTOMDRAW>(pNMHDR);</p><p>  // TODO: 在此添加控件通知處理程序代碼</p><p>  volume=vol.GetPos();</p><p>  player.SetVolume(volume);</p><p>  CString Vtemp;</p&

76、gt;<p>  Vtemp.Format("音量 %d%%",volume/10);</p><p>  SetDlgItemText(IDC_STATIC_VOL,Vtemp);</p><p>  *pResult = 0;</p><p><b>  }</b></p><p>

77、<b>  時(shí)間</b></p><p>  void CMPlayerDlg::OnCustomdrawSliderTime(NMHDR *pNMHDR, LRESULT *pResult)</p><p><b>  {</b></p><p>  LPNMCUSTOMDRAW pNMCD = reinterpret_

78、cast<LPNMCUSTOMDRAW>(pNMHDR);</p><p>  // TODO: 在此添加控件通知處理程序代碼</p><p>  *pResult = 0;</p><p><b>  }</b></p><p>  void CMPlayerDlg::OnTimer(UINT_PTR nI

79、DEvent)</p><p><b>  {</b></p><p>  CString temp;</p><p>  // TODO: 在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值</p><p>  if(nIDEvent==0)</p><p><b>  {</b>&

80、lt;/p><p>  int index;</p><p>  totaltime=player.info(MCI_STATUS_LENGTH);</p><p>  currenttime=player.info(MCI_STATUS_POSITION);</p><p>  if(currenttime>=totaltime)<

81、/p><p><b>  {</b></p><p>  switch(mode)</p><p><b>  {</b></p><p>  case SINGLE:</p><p>  player.SeekTo(0);</p><p>  OnBnC

82、lickedStop();</p><p><b>  break;</b></p><p>  case R_SINGLE:</p><p>  player.SeekTo(0);</p><p>  OnBnClickedPlay();</p><p><b>  break;<

83、;/b></p><p><b>  case ALL:</b></p><p>  index=list.GetCurSel();</p><p>  if(index<list.GetCount()-1)</p><p><b>  {</b></p><p>

84、;  OnBnClickedBtnNext();</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  player.SeekTo(0);</p><p>  O

85、nBnClickedStop();</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case R_ALL:</p><p>  index=list.GetCurSel();</p><p>  if(index&

86、lt;list.GetCount()-1)</p><p><b>  {</b></p><p>  OnBnClickedBtnNext();</p><p><b>  }</b></p><p><b>  else</b></p><p>&l

87、t;b>  {</b></p><p>  list.SetCurSel(0);</p><p>  OnBnClickedPlay();</p><p><b>  }</b></p><p><b>  break;</b></p><p><b&

88、gt;  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  totaltime=totaltime/1000;</p><p>  hour=totaltime/3600;</p><p>

89、  minute=(totaltime/60)%60;</p><p>  second=totaltime%60;</p><p>  currenttime=currenttime/1000;</p><p>  process.SetPos((currenttime*100)/totaltime);</p><p>  ch=curre

90、nttime/3600;</p><p>  cm=(currenttime/60)%60;</p><p>  cs=currenttime%60;</p><p>  temp.Format("%d:%d:%d / %d:%d:%d",ch,cm,cs,hour,minute,second);</p><p>  Se

91、tDlgItemText(IDC_STATIC_TIME,temp);</p><p><b>  }</b></p><p>  CDialogEx::OnTimer(nIDEvent);</p><p><b>  }</b></p><p>  void CMPlayerDlg::OnRele

92、asedcaptureSliderTime(NMHDR *pNMHDR, LRESULT *pResult)</p><p><b>  {</b></p><p>  // TODO: 在此添加控件通知處理程序代碼</p><p>  SetTimer(0,1000,NULL);</p><p>  CString t

93、emp;</p><p>  GetDlgItemText(IDC_PAUSE,temp);</p><p>  DWORD time=player.info(MCI_STATUS_LENGTH);</p><p>  DWORD currenttime;</p><p>  currenttime=time*(process.GetPos(

94、))/100;</p><p>  player.SeekTo(currenttime);</p><p>  player.Play();</p><p>  if(temp.Compare("繼續(xù)播放")==0)</p><p><b>  {</b></p><p>  

95、SetDlgItemText(IDC_PAUSE,"暫停");</p><p><b>  }</b></p><p>  *pResult = 0;</p><p><b>  }</b></p><p><b>  返回</b></p>&

96、lt;p>  void CMPlayerDlg::OnBnClickedBtnBack()</p><p><b>  {</b></p><p>  int index;</p><p>  index=list.GetCurSel();</p><p><b>  index-=1;</b>

97、;</p><p>  if(index<0)</p><p><b>  {</b></p><p>  MessageBox("沒有音樂|");</p><p><b>  return;</b></p><p><b>  }<

98、/b></p><p>  list.SetCurSel(index);</p><p>  OnBnClickedPlay();</p><p>  // TODO: 在此添加控件通知處理程序代碼</p><p><b>  }</b></p><p><b>  列表</

99、b></p><p>  void CMPlayerDlg::OnDblclkList()</p><p><b>  {</b></p><p>  OnBnClickedPlay();</p><p>  // TODO: 在此添加控件通知處理程序代碼</p><p><b>

100、  }</b></p><p><b>  模式</b></p><p>  void CMPlayerDlg::OnBnClickedBtnMode()</p><p><b>  {</b></p><p>  switch(mode)</p><p><

101、;b>  {</b></p><p>  case SINGLE:</p><p>  mode=R_SINGLE;</p><p>  SetDlgItemText(IDC_BTN_MODE,"播放模式:單曲循環(huán)");</p><p><b>  break;</b></p&

102、gt;<p>  case R_SINGLE:</p><p><b>  mode=ALL;</b></p><p>  SetDlgItemText(IDC_BTN_MODE,"播放模式:全部播放");</p><p><b>  break;</b></p><p

103、><b>  case ALL:</b></p><p>  mode=R_ALL;</p><p>  SetDlgItemText(IDC_BTN_MODE,"播放模式:全部循環(huán)");</p><p><b>  break;</b></p><p>  case R_

104、ALL:</p><p>  mode=SINGLE;</p><p>  SetDlgItemText(IDC_BTN_MODE,"播放模式:單曲播放");</p><p><b>  break;</b></p><p><b>  }</b></p><

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論