版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、*大學(xué)VC+程序設(shè)計(jì)報(bào)告項(xiàng)目名稱:基于MFC的多媒體音頻播放器設(shè)計(jì)學(xué) 院:信息科學(xué)技術(shù)學(xué)院制 作 人:指導(dǎo)教師:2011年12月22日基于MFC的多媒體音頻播放器設(shè)計(jì)摘要雖然這學(xué)期是第一次接觸VC,但因?yàn)橐郧坝羞^對(duì)C語(yǔ)言的學(xué)習(xí),在以前的基礎(chǔ)上,在老師教導(dǎo)下,通過這一個(gè)學(xué)期的知識(shí)積累和上機(jī)實(shí)驗(yàn),我對(duì)基本的控件,圖形圖像,窗口和對(duì)話框都有了較為系統(tǒng)的了解。而這次課設(shè)任務(wù)中選做的實(shí)驗(yàn),體現(xiàn)了以前所學(xué)知識(shí)的運(yùn)用,是真正地把控件,圖形圖像,窗口和對(duì)話框等知識(shí)點(diǎn)結(jié)合起來的日常應(yīng)用程序MP3播放器。 當(dāng)然通過這次課設(shè),我對(duì)本學(xué)期所學(xué)的知識(shí)再次得到充分鞏固,知識(shí)在實(shí)際運(yùn)用中得以充分地轉(zhuǎn)化一種基本動(dòng)手能力,讓我
2、能夠更進(jìn)一步地學(xué)習(xí)VisualC+6.0的知識(shí),結(jié)果是我可以理解一些常見的大型程序以及自己動(dòng)手創(chuàng)作出相應(yīng)而基本的程序,而課設(shè)實(shí)驗(yàn)的成功完成無(wú)疑為今后學(xué)習(xí)VC+編程培養(yǎng)了濃厚的興趣,也為今后要從事的編程工作奠定了堅(jiān)實(shí)的基礎(chǔ)。關(guān)鍵詞: VC+6.0、MFC、播放器、MP3、WMAMFC-based Design Of Multimedia Audio PlayerABSTRACTAlthough this semester is the first contact with the VC, but because in the past have had to learn the C langua
3、ge, in the past, based on the teacher teaches, through which a term accumulation of knowledge and hands-on experiments, I have the basic controls, graphics images, windows and dialog boxes have a more systematic understanding. The task of selecting the class set up to do the experiment, reflecting t
4、he use of previous knowledge, is really the controls, graphics, windows and dialog boxes combining the knowledge of the daily point of application - MP3 player. Course set by the class, I learned this semester once again be fully consolidated in the practical application of knowledge to be fully tra
5、nsformed into a basic ability, so I can learn VisualC + +6.0 to further the knowledge, the result is I can understand some of the common large-scale program and yourself to create the appropriate and essential procedures, and course set up the experiment successful completion of doubt for future lea
6、rning VC + + programming to develop a strong interest, but also for the future to engage in the programming work has laid a solid basis. Keywords: VC + +6.0, MFC, player, MP3, WMA1.1 MFC簡(jiǎn)介- 5 -1.2 MCI簡(jiǎn)介- 5 -2 總體設(shè)計(jì)- 6 -2.1 實(shí)現(xiàn)功能- 6 -3、詳細(xì)設(shè)計(jì)- 6 -3.1 界面布局設(shè)計(jì)- 6 -3.2 各模塊功能設(shè)計(jì)- 7 -3.2.1 處理“播放”按鈕- 7 -3.2.3 處理
7、“暫?!卑粹o- 8 -3.2.4 處理“停止”按鈕- 8 -3.2.5 對(duì)話框初始化- 8 -3.2.6關(guān)聯(lián)文件夾- 9 -3.2.7關(guān)聯(lián)文件- 12 -4、總結(jié)- 12 -參考文獻(xiàn)- 13 -1.1 MFC簡(jiǎn)介MFC是Visual C+是核心。MFC類庫(kù)將所有圖形用戶界面的元素如窗口、菜單和按鈕等都以類的形式進(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)用程序
8、框架。每個(gè)MFC類都包括了一些函數(shù),函數(shù)放到類中,符合C+編程方法。這些函數(shù),必須通過類定義對(duì)象才能使用1。1.2 MCI簡(jiǎn)介MCI(Media Control Interface)媒體控制接口是MircroSoft提供的一組多媒體設(shè)備和文件的標(biāo)準(zhǔn)接口,它的好處是可以方便地控制絕大多數(shù)多媒體設(shè)備包括音頻、視頻、影碟、錄像等多媒體設(shè)備,而不需要知道它們的內(nèi)部工作狀況。它所支持的媒體格式包括avi、wav、mpeg等等2。音頻技術(shù)發(fā)展較早,幾年前一些技術(shù)已經(jīng)成熟并產(chǎn)品化,音頻技術(shù)主要包括四個(gè)方面:音頻數(shù)字化、語(yǔ)音處理、語(yǔ)音合成及語(yǔ)音識(shí)別。音頻文件包括多種格式的文件,MP3就是其中的一種。MP3的全
9、稱是Moving Picture Experts Group,Audio Layer ,它所使用的技術(shù)是在VCD(MPEG-1)的音頻壓縮技術(shù)上發(fā)展出的第三代,而不是MPEG-3。MP3是一種音頻壓縮的國(guó)際技術(shù)標(biāo)準(zhǔn),它一般需要MP3播放器來讀取。2 總體設(shè)計(jì)2.1 實(shí)現(xiàn)功能MP3播放器主要對(duì)常用Windows音頻格式的文件實(shí)現(xiàn)播放控制:播放、暫停、停止、打開目錄、打開文件等操作。 整體布局如下: MP3播放器打開文件播放歌曲暫停播放停止播放打開目錄3、詳細(xì)設(shè)計(jì)3.1 界面布局設(shè)計(jì)(1) 創(chuàng)建一個(gè)對(duì)話框類,類名為media player。(2) 向?qū)υ捒蛑刑砑覩roup Box控件、Static
10、 Text控件以及按鈕控件。(3) 設(shè)置所添加的控件的屬性。系統(tǒng)界面的運(yùn)行結(jié)果圖如圖3-1所示。圖3-1 系統(tǒng)界面運(yùn)行結(jié)果圖Media Player對(duì)話框中所用控件的屬性描述如表3-1所示。表3-1 對(duì)話框控件ID及其描述控件ID描述IDC_BUTTON_tianjiawenjian按鈕控件,添加文件IDC_BUTTON_jianjiawenjianjia按鈕控件,添加文件夾IDC_BUTTON_OK按鈕控件,播放IDC_BUTTON_zanting按鈕控件,單擊它用來暫停歌曲IDC_BUTTON_tingzhi按鈕控件,單擊它用來停止歌曲IDC_BUTTON_guanyu關(guān)于,版權(quán)信息3.2
11、 各模塊功能設(shè)計(jì)3.2.1 處理“播放”按鈕:void CPlaymusicDlg:OnOK() TCHAR cmd_stopMAX_PATH;wsprintf(cmd_stop,"stop %s",shortpathfilename);/停止上一個(gè)mciSendString(cmd_stop,"",NULL,NULL);int index = m_Songs.GetSelectionMark();/獲取標(biāo)號(hào)if (index != -1)CString data = m_Songs.GetItemText(index,0); /歌曲路徑shortpat
12、hfilename=data; /保存路徑 TCHAR cmdMAX_PATH+10;wsprintf(cmd,"play %s",data);mciSendString(cmd,"",NULL,NULL);3.2.3 處理“暫?!卑粹o:void CPlaymusicDlg:OnBUTTONzanting()/暫停mciSendString("pause "+shortpathfilename,0,0,0);3.2.4 處理“停止”按鈕void CPlaymusicDlg:OnBUTTONtingzhi()/停止mciSendStri
13、ng("stop "+shortpathfilename,0,0,0);3.2.5 對(duì)話框初始化BOOL CPlaymusicDlg:OnInitDialog()CDialog:OnInitDialog();/ 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 < 0xF000);CM
14、enu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this
15、 automatically/ when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small iconCAboutDlg dlg;dlg.DoModal();m_brush.CreateSolidBrush(RGB(200,100,200);/?顏色沒有變化?/設(shè)置擴(kuò)展風(fēng)格m_Songs.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_
16、GRIDLINES |LVS_EX_TWOCLICKACTIVATE);m_Songs.InsertColumn(0,"歌曲名稱",LVCFMT_LEFT,230);CFileFind fFind;CString str;GetModuleFileName(NULL,str.GetBuffer(0),MAX_PATH);int pos = str.ReverseFind('');CString temp = str;CString filename = temp.Left(pos);if (fFind.FindFile(filename+"/son
17、g.ini")CString song;UINT num = GetPrivateProfileInt("歌曲列表","數(shù)量",0,filename+"/song.ini");CString key;for (int i = 0; i < num; i+)key.Format("%d",i);GetPrivateProfileString("歌曲列表",key.GetBuffer(0),"",song.GetBuffer(0),100,filename+&qu
18、ot;/song.ini");m_Songs.InsertItem(i,song);return TRUE; / return TRUE unless you set the focus to a control3.2.6關(guān)聯(lián)文件夾void CPlaymusicDlg:OnBUTTONtianjiawenjianjia()/關(guān)聯(lián)文件夾/ TODO: Add your control notification handler code hereBROWSEINFO bi; char bufferMAX_PATH; ZeroMemory(buffer,MAX_PATH); bi.hwnd
19、Owner=GetSafeHwnd(); bi.pidlRoot=NULL;bi.pszDisplayName=buffer; bi.lpszTitle="選擇一個(gè)文件夾" bi.ulFlags=BIF_EDITBOX; bi.lpfn=NULL; bi.lParam=0; bi.iImage=0; LPITEMIDLIST pList=NULL; if(pList=SHBrowseForFolder(&bi)!=NULL) m_Songs.DeleteAllItems();char pathMAX_PATH; ZeroMemory(path,MAX_PATH);
20、SHGetPathFromIDList(pList,path);CString strPath=path;CString strtemp,mp3="mp3",wma="wma"if(strPath.Right(1)!="")strtemp.Format("%s*.%s",strPath,mp3);elsestrtemp.Format("%s*.%s",strPath,mp3);CFileFind findfile;BOOL bfind=findfile.FindFile(strtemp);whi
21、le(bfind)bfind=findfile.FindNextFile();int i=m_Songs.GetItemCount();m_Songs.InsertItem(i,"");CString s = findfile.GetFilePath();#ifdef _DEBUGafxDump << "CString s" << s << "n"#endifLPTSTR fileName = s.GetBuffer( MAX_PATH );TCHAR shortNameMAX_PATH;/開辟sh
22、ortname【】?jī)?nèi)存空間GetShortPathName(fileName,shortName,sizeof(shortName)/sizeof(TCHAR);/獲取刪掉空格的文件路徑s.ReleaseBuffer( );#ifdef _DEBUGafxDump << "CString s " << s << "n"#endifm_Songs.SetItemText(i,0,(LPCSTR)CString(shortName) ); char pathMAX_PATH;ZeroMemory(path,MAX_PATH
23、);SHGetPathFromIDList(pList,path);CString strPath=path;CString strtemp,wma="wma"if(strPath.Right(1)!="")strtemp.Format("%s*.%s",strPath,wma);elsestrtemp.Format("%s*.%s",strPath,wma);CFileFind findfile;BOOL bfind=findfile.FindFile(strtemp);while(bfind)bfind=fin
24、dfile.FindNextFile();int i=m_Songs.GetItemCount();m_Songs.InsertItem(i,"");CString ss = findfile.GetFilePath();#ifdef _DEBUGafxDump << "CString ss" << ss << "n"#endifLPTSTR fileName1 = ss.GetBuffer( MAX_PATH );TCHAR shortName1MAX_PATH;/開辟shortname【】?jī)?nèi)存空
25、間GetShortPathName(fileName1,shortName1,sizeof(shortName1)/sizeof(TCHAR);/獲取刪掉空格的文件路徑ss.ReleaseBuffer();#ifdef _DEBUGafxDump << "CString ss " << ss << "n"#endifm_Songs.SetItemText(i,0,(LPCSTR)CString(shortName1) );3.2.7關(guān)聯(lián)文件void CPlaymusicDlg:OnBUTTONtianjiawenjian() / TODO: Add your control notification handler code hereCFileDialog fDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,"Audio Files(*.wma; *.mp3) | *.wma; *.mp3|",
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老院入住老人突發(fā)疾病應(yīng)急處理制度
- 企業(yè)設(shè)備管理規(guī)范制度
- 供應(yīng)商管理制度
- 2026年電影史及影視理論專業(yè)考試題庫(kù)
- 2026年CFA特許金融分析師考前模擬題及答案解析
- 2026年電工技術(shù)專業(yè)知識(shí)題庫(kù)與解析
- 2026年工程設(shè)計(jì)師職業(yè)技能等級(jí)考試題庫(kù)及解答
- 2026年霧計(jì)算協(xié)議
- 2026年委托貼標(biāo)合同
- 2025年周口理工職業(yè)學(xué)院馬克思主義基本原理概論期末考試模擬題及答案解析(奪冠)
- 雷波縣糧油貿(mào)易總公司 2026年面向社會(huì)公開招聘筆試參考題庫(kù)及答案解析
- 2025年互聯(lián)網(wǎng)公司產(chǎn)品經(jīng)理面試實(shí)戰(zhàn)試題及答案
- 2026年上海市浦東新區(qū)初三上學(xué)期一模數(shù)學(xué)試卷和參考答案
- 內(nèi)蒙古包鋼1.18事故警示安全教育課件
- 公安局民警崗位培訓(xùn)制度
- (2025年)小學(xué)三視圖題題庫(kù)及答案
- (正式版)DB44∕T 2771-2025 《全域土地綜合整治技術(shù)導(dǎo)則》
- 春節(jié)前安全意識(shí)培訓(xùn)課件
- 江蘇省無(wú)錫市2025-2026學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)模擬試卷【含答案詳解】
- 2.2 中國(guó)的氣候 第一課時(shí) 教學(xué)設(shè)計(jì)2025八年級(jí)地理上學(xué)期湘教版
- 2024冀少版八年級(jí)生物下冊(cè)全冊(cè)知識(shí)點(diǎn)考點(diǎn)清單
評(píng)論
0/150
提交評(píng)論