(精選)多媒體視頻播放器_第1頁
(精選)多媒體視頻播放器_第2頁
(精選)多媒體視頻播放器_第3頁
(精選)多媒體視頻播放器_第4頁
(精選)多媒體視頻播放器_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄多媒體視頻播放器11基本功能描述12設計思路13軟件設計23.1 設計步驟33.2 界面設計63.3 關鍵功能的實現93.3.1 “打開”功能的實現93.3.2 “播放”、“暫?!薄ⅰ巴V埂薄叭痢惫δ艿膶崿F103.3.3 “上一首”和“下一首”功能實現123.3.4 音量滑動條功能的實現123.3.5 播放列表功能的實現143.3.6 進度滑動條功能的實現154結論與心得體會165參考文獻176思考題187 附錄187.1調試報告187.1.1 調試一187.1.2 調試二197.2 測試結果207.3 關鍵源代碼21多媒體視頻播放器1基本功能描述多媒體視頻播放工具是目前計算機必備的一個

2、軟件,比較流行的有 Real Player、Windows Media Player 以及國產暴風影音等,能夠播放 RM、RMVB、MP3、MPEG、DAT 等多種格式的視頻文件 mp3、wma、mdi、wav、avi、dat 等格式的音頻文件。用VC+軟件設計并編寫出一個多媒體視頻播放器。在設計期間,可以選擇使用的多媒體控件,制作與用戶交互性較好的應用程序界面。對于控件有多種,可以自己選擇。本次課程設計要使用 VC+6.0 內部的 ActiveX 控件Windows Media Player 控件,建立自己的多媒體播放器。此多媒體播放器具有打開文件、播放、暫停、停止、關閉、全屏、音量滑塊調節(jié)

3、、進度滑塊調節(jié)、快進、快退、顯示隱藏播放列表等基本功能, 可以播放*.mp3、 *.wma、 *.mdi、 *.wav、 *.avi、 *.dat、 *.mpg、*.rmvb等格式的多媒體文件。同時還具有自制的播放列表,可以按照列表上的順序進行一曲、下一曲的播放。2設計思路Windows Media Player是一款Windows系統自帶的播放器,支持通過插件增強功能。其控件作為本次課設的媒體控件可以滿足要求。并且該控件是微軟自帶的免費控件,通常每個電腦都應有這個控件,方便設計出來的軟件在各個電腦運行。根據 Windows Media Player 和各個按鈕控件功能的特點,首先要在初始化中

4、對CWMPControl,CWMPSettings,CWMPPlaylist,CWMPMedia 等類的對象進行綁定和定義。播放器的一些基本的功能如播放、暫停、全屏、靜音、快進、快退等主要是調用 CWMPControl 和 CWMPPlayer 類中的成員函數來進行實現。對于打開按鈕,需要調用通用文件對話框類,調用 szFileFilter()文件過濾函數和 GetFileName()獲取文件名函數。除了以上提到的功能的實現,還有進度滑條Slider_progress和音量滑動條Slider2是通過對 CSliderCtrl 類實現的。音量滑塊50,新建list.txt,計時器開啟打開程序點擊

5、“保存列表”初始化 List.txt點擊“打開”選擇文件顯示在list.txt中刪除列表雙擊列表框中內容或選中單擊“播放”開始播放OnTimer()音量調節(jié)點擊“快進”點擊“下一首”點擊“停止”點擊“暫停/繼續(xù)”獲取位置參數返回響應CwnpSetting類中的Setvolume響應CwnpControl類中的fastForward函數獲取當前播放位置返回給進度條滑塊的SetPos獲取音量返回SetPosint idex=當前光標位置加1,讀取idex中文本,返回SetUrl函數響應CwnpControl類中的stop函數響應CwnpControl類中的pause函數和play函數圖1視頻播放器

6、流程圖3軟件設計設計平臺可以是Win32的操作平臺上,使用已安裝的VC6.0+進行設計和調試。在設計前要確保平臺中有WMP控件。結合之前的設計思路,使用 Windows Media Player 等控件來制作多媒體視頻播放器。若是Win64這與VC6.0+不兼容,可以選擇更高的版本。3.1 設計步驟打開 VC+6.0,點擊“新建”,在“新建”窗口選擇“工程”選項卡。由于程序是基于對話框的 MFC 應用程序使用 Windows Media Player等控件來制作多媒體視頻播放器。設置好地址位置和工程名后點“確定”。這里的工程名字可以是自己的名字拼音縮寫,也可以沒有任何含義。圖2“新建”對話框示

7、意圖在點擊“確定”后進入到了“MFC 應用程序向導步驟1”的設置界面,選擇“基本對話框”,然后點擊“下一步”。圖3“MFC 應用程序向導”示意圖在剩下的3個步驟中,全部選擇默認的設置,不要做隨意更改,直至“完成”便實現了對話框的創(chuàng)建。然后是插入控件,先把系統初始化的按鈕用“Delete”刪除,在單擊鼠標右鍵選擇“插入 ActiveX 控件”,在跳出的對話框中選擇“Windows Media Player”(一般當電腦安裝了Windows Media Player,其控件也應該存在) ,點擊“確定”。圖4添加“Windows Media Player”控件示意圖雖然已經插入控件了,但這時的控件還

8、不能使用,因為控件的各種類并沒有一起加入工程類中。右擊鼠標,選擇“建立類向導”,這時系統跳出對話框提示是否加入來自控件的類,直接點擊“確定”就可以了。圖5“Windows Media Player”控件類添加示意圖接著對控件關聯變量,右擊加入的WMP控件,點擊“屬性”,把ID改為“IDC_player”,然后打開“建立類向導”點到“Member Variables”頁面向IDC_player添加變量。單擊“ADD Variables”,會彈出圖6所示的“Add member name”對話框,命名為“m_player”,設為控制“Control”型,點擊“OK” 。圖6變量命名示意圖關聯變量之

9、后才算是真正的添加了該控件,可以發(fā)現在關聯變量之后,控件工具欄多了“Windows Media Player”控件的選項,并且在“Source Files”中增加了17個類,相應的頭文件也增加了17個,其中最主要的類為 Cwmpplayer4,Cwmpcontrols,Cwmpmedia,Cwmpsettings 四個大類。 Cwmpplayer4 類主要是關于對其他類的對象的調用以及基本的控件功能的實現,提供了與 Windows Media Player 控件進行交互的基本方法,其中部分成員函數還能夠進一步獲取得到其他相關類對象的實例;Cwmpcontrols 類主要是對控件的更多的操作;C

10、wmpmedia 類主要是對于媒體文件資源的一些操作; Cwmpsettings 類主要是對于媒體文件中的一些基本設置的操作。3.2 界面設計首先是打開按鈕,用于媒體文件的打開;然后依次是播放、暫停、停止、快進、快退、靜音、全屏、退出、上一首、下一首、顯示/隱藏按鈕,以及視頻進度滑塊和音量滑塊條 Slider 控件。對控件主要進行變量的關聯,以及 ID 的修改,對于普通按鈕進行ID修改,結果如下下表1、表2、表3和表4所示。表1控件 ID 以及對應響應函數表按鈕 ID 控件 Caption消息響應函數類型IDC_BUTTON_open打開OnBUTTONopen()命令按鈕IDC_BUTTON

11、_fullscreen全屏OnBUTTONfullscreen()命令按鈕IDC_BUTTON_play播放OnBUTTONplay()命令按鈕IDC_BUTTON_panse暫停/播放OnBUTTONpanse()命令按鈕IDC_BUTTON_stop停止OnBUTTONstop()命令按鈕IDC_BUTTON_fastforward快進OnBUTTONFastforward()命令按鈕IDC_BUTTON_fasteverse快退OnBUTTONfasteverse()命令按鈕IDC_BUTTON_pre上一曲OnBUTTONpre()命令按鈕IDC_BUTTON_next下一曲OnBUT

12、TONnext()命令按鈕IDC_BUTTON4_mute靜音OnBUTTON4mute()命令按鈕IDCANCEL退出無命令按鈕IDC_BUTTON_show隱藏/展開OnBUTTONshow()命令按鈕IDC_BUTTON_save保存列表OnBUTTONsave()命令按鈕IDC_BUTTON_clear刪除列表OnBUTTONclear()命令按鈕然后是加入一些關聯變量的控件,之前加入了WMPlayer,還要加入類別為“滑塊”的Slider來當調節(jié)聲音的滑塊,還有加入類別為“列表框”的List Control來充當播放列表。表2控件 ID 以及關聯變量表按鈕ID控件 Caption變量

13、名稱類型IDC_OCX1WMPlayerm_playerCWMPlayer4IDC_SLIDER_progressSliderm_jinduCSliderCtrlIDC_SLIDER_volSliderm_volCSliderCtrlIDC_LIST_MENUList Controlm_list2CListBox在按鈕對應的消息響應函數中寫程序將要用到表2的變量和WMP控件中的5個類的函數。在這五個類中:Cwmpplayer4 類主要是關于對其他類的對象的調用以及基本的控件功能的實現,是WMP控件函數與外部交流的橋梁,不可缺少。寧外其部分成員函數還能夠進一步獲取得到其他相關類對象的實例; Cw

14、mpcontrols 類主要是對控件的更多的操作,例如播放、暫停;Cwmpmedia 類主要是對于媒體文件資源的一些操作,例如獲取路徑和名稱;Cwmpplaylist類主要是關于播放列表的操作;Cwmpsettings 類主要是對于媒體文件中的一些基本設置的操作。表3其他類及對應對象表類名頭文件名對象名 CWMPControlsWmpcontrols.hm_ControlCWMPSettingswmpsettings.hm_SettingCWMPMediawmpmedia.hm_MediaCWMPPlaylistwmpplaylist.hm_Playlist表4其他數據定義 數據類型變量名數據

15、類型變量名CStringm_FileNameBOOLflag,flag2,nCStringm_PathNameintvol除了對各個控件關聯變量以及消息響應函數,還要對對話框類進行消息響應函數的關聯,如當一首歌播放完后的模式選擇。應用到 WM_TIMER 消息響應函數以及SetTimer()和KillTimer()函數,如圖建立OnTimer函數。圖7添加“WMTIMER”消息函數示意圖還有菜單的設計,其相對簡單,只要名稱和ID與表1保持一致就可以了。在“Resource File”中右擊鼠標添加“MENU”,屬性為“IDR_MENU1”。但是菜單并未與對話窗口有實質聯系,需要將菜單加入到“I

16、DD_SHIFAN_DIALOG”中來,在 “IDD_SHIFAN_DIALOG”窗口空白右鍵單擊,選中菜單“IDR_MENU1”,這樣便完成了對菜單的加載。圖8控件按鈕分布圖編譯運行程序后得到了初步的界面效果圖,當然還沒有加入函數。同時在左上角會顯示自己寫的工程名“YLJ_Media_Player”,如圖8所示。3.3 關鍵功能的實現對于各個按鈕、列表功能的實現主要是通過對各個函數加入相應的代碼,下文將列出相應的關鍵代碼。3.3.1 “打開”功能的實現“打開”按鈕主要是實現了對打開的文件進行過濾,主要使用了szFileFilter()函數。點擊確定時,首先是把文件路徑傳給播放列表中,列表在從

17、文件路徑中提取文件名來顯示。然后又把文件路徑通過SetUrl()交給控件讀取播放。void CYLJ_Media_PlayerDlg:OnBUTTONopen() char szFileFilter="所有支持類型|*.mp3;*.mp4;*.wma;*.dat;*.wav;*.avi;*.mov;*.rmvb;*.mmm;*.mid;*.rmi;*.mpeg;*.mpg|" "Mp3 File(*.mp3)|*.mp3|" "Mp4 File(*.mp4)|*.mp4|" "Wma File(*.wma)|*.wma|&q

18、uot; "Video File(*.dat)|*.dat|" "Wave File(*.wav)|*.wav|" "AVI File(*.avi)|*.avi|" "Movie File(*.mov)|*.mov|" "Rmvb File(*.rmvb)|*.rmvb|" "Media File(*.mmm)|*.mmm|" "Mid File(*.mid;*,rmi)|*.mid;*.rmi|" "MPEG File(*.mpeg)|*.mp

19、eg|" "MPG File(*.mpg)|*.mpg|" "All File(*.*)|*.*|"/文件類型過濾 CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter); POSITION pos=dlg.GetStartPosition(); if(dlg.DoModal()=IDOK) while(pos!=NULL) m_PathName=dlg.GetNextPathName(pos); m_list2.AddString(m_PathName); 3.3.2 “播放

20、”、“暫?!薄ⅰ巴V埂薄叭痢惫δ艿膶崿F其實和3.3.1中提到一種播放方法一樣使用了SetUrl()函數來實現。void CYLJ_Media_PlayerDlg:OnBUTTONplay() CString str;int index=m_list2.GetCurSel();m_list2.GetText(index,str);m_player.SetUrl(str); “暫?!焙汀巴V埂惫δ軐崿F方法和播放差不多,只是使用的m_player.GetControls()中函數改變了。void CYLJ_Media_PlayerDlg:OnBUTTONpanse() flag2=!flag2;i

21、f(flag2) m_player.GetControls().pause();elsem_player.GetControls().play();void CYLJ_Media_PlayerDlg:OnBUTTONstop() m_player.GetControls().stop();全屏功能的實現也是調用SetFullScreen(TRUE)函數來實現。void CYLJ_Media_PlayerDlg:OnBUTTONfullscreen() m_player.SetFullScreen(TRUE);3.3.3 “上一首”和“下一首”功能實現“上一首”就是讓光標往上移一行,也就是對應的

22、光標變量(index)減去1。當要判斷光標在第一行的情況,也就是index=0的時候,這時光標應移到最后一首歌曲或視頻上。void CYLJ_Media_PlayerDlg:OnBUTTONpre() CString str;int index=m_list2.GetCurSel()-1;/光標減一if(index<0) index=m_list2.GetCount()-1;/如果播放完第一曲就自動播放最后一首m_list2.GetText(index,str);/獲得當前光標所指的路徑字符串m_player.SetUrl(str);/開始播放上一首m_list2.SetCurSel(i

23、ndex);/自動置光標 其“下一首”和“上一首”大同小異,只不過index應加1,在光標為最后一行時應判斷移動到第一行。void CYLJ_Media_PlayerDlg:OnBUTTONnext() CString str;int index=m_list2.GetCurSel()+1; /光標加一if(index>=m_list2.GetCount() index=0;/如果播放完最后一曲就自動播放第一首m_list2.GetText(index,str); /獲得當前光標所指的路徑字符串m_player.SetUrl(str); /開始播放下一首m_list2.SetCurSel

24、(index);/自動置光標3.3.4 音量滑動條功能的實現音量滑動條是區(qū)別于其他命令按鈕的,它是滑塊,是調用 CSliderCtrl 控件的 m_vol 變量來實現的。音量調節(jié)函數主要是使用一個嵌套函數“m_player.GetSettings().SetVolume(100-m_vol.GetPos();”實現的。設置音量用的是“SetVolume()”函數。在“OnInitDialog()”函數中已對滑塊范圍進行初始化CSliderCtrl* pSlide1 =(CSliderCtrl*) GetDlgItem(IDC_SLIDER1);pSlide1->SetRange(0, 1

25、00); 使音量變化范圍為0100。void CYLJ_Media_PlayerDlg:OnReleasedcaptureSlider1(NMHDR* pNMHDR, LRESULT* pResult) m_player.GetSettings().SetVolume(100-m_vol.GetPos();*pResult = 0;另外靜音程序如下,在靜音按鈕按下后把系統音量保存在vol中,等恢復時使用,再設置為靜音,再次按下后取消靜音然后恢復開始音量。void CYLJ_Media_PlayerDlg:OnBUTTON4mute() n=!n;if (n)vol=m_player.GetSe

26、ttings().GetVolume();/ 獲取當前音量值m_player.GetSettings().SetMute(TRUE);/設為靜音elsem_player.GetSettings().SetMute(FALSE);/解除靜音m_player.GetSettings().SetVolume(vol);/恢復當前音量值3.3.5 播放列表功能的實現播放列表主要有“隱藏/展開”、“保存列表”、 “清空列表” 這三個功能。這個列表的三個功能實現前提第一次運行程序時會在E盤新建一個txt文檔并命名為“l(fā)ist.txt”。初始化函數如下:CStdioFile *fsp=new CStdioF

27、ile("E:list.txt",CFile:modeRead);CString str;while(fsp->ReadString(str)m_list2.AddString(str);fsp->Close();delete fsp;文檔可以保存播放文件列表使在下次打開時可自動的生成播放列表。下面是“保存列表”的函數。void CYLJ_Media_PlayerDlg:OnBUTTONsave() / TODO: Add your control notification handler code hereCStdioFile file;CString str

28、temp;file.Open("E:list.txt",CFile:modeCreate|CFile:modeReadWrite|CFile:typeText); for(int i=0;i<m_list2.GetCount();i+)CString strtemp;m_list2.GetText(i,strtemp);strtemp+="n"/換行file.WriteString(strtemp);file.Close();然后是“清除列表”功能,用“ResetContent()”直接清除列表。void CYLJ_Media_PlayerDlg:

29、OnBUTTONclear() CStdioFile file; m_list2.ResetContent(); file.Open("E:list.txt",CFile:modeCreate); file.Close(); 最后是“顯示/隱藏”功能,其實就是在重新設置窗口大小,若展開則恢復原來的窗口大小,這里使用了SetWindowPos()函數。void CYLJ_Media_PlayerDlg:OnBUTTONshow() flag=!flag;if(flag) SetWindowPos(NULL,0,0,500,520,SWP_NOMOVE);else SetWin

30、dowPos(NULL,0,0,702,520,SWP_NOMOVE);3.3.6 進度滑動條功能的實現進度條可以時時顯示播放的位置,而視頻進度滑塊的初始化放在OnHScroll()函數中實現。void CYLJ_Media_PlayerDlg:OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) int m_time;m_time=(int)m_player.GetCurrentMedia().GetDuration();m_jindu.SetRange(0,m_time);/初始化視頻進度滑塊int NewPos;if(CSl

31、iderCtrl*)pScrollBar=&m_jindu)switch(nSBCode)case SB_THUMBTRACK:m_jindu.SetPos(nPos);m_player.GetControls().SetCurrentPosition(double)nPos);break;case SB_PAGEDOWN:NewPos=m_jindu.GetPos();m_player.GetControls().SetCurrentPosition(double)NewPos);break;case SB_PAGEUP:NewPos=m_jindu.GetPos();m_playe

32、r.GetControls().SetCurrentPosition(double)NewPos);break;視頻進度的控制主要是SB_THUMBTRACK、SB_PAGEDOWN、SB_PAGEUP,三個消息響應即移動滑塊、單擊滑塊右邊滑條、單擊滑塊左邊滑條的消息響應來實現視頻進度的控制。4結論與心得體會平時我挺喜歡聽歌看電影的,當看到老師給的選題中有多媒體視頻播放器這個題目,我開始是還是挺激動的,能夠自己做一個簡單的程序,滿足自己的愛好也是挺有成就感的。在一開始選這個課題時,我和其他同學都覺得很難。不像簡單計算器和畫圖軟件等課題曾在上課提到過,對于多媒體播放器我看到看到了題目不知道該怎樣

33、做。然后我花了大量時間去了解第一步怎么做,分別查找了各個控件基本用法功能,最后選用了 Windows Media Player 控件,因為我vc中只能找到這個與視頻有關的控件,于是在網上查了一些關于 Windows Media Player 控件的資料,結果按照網上說的方法來根本無法實現,因為網上都說要先插入17個Windows Media Player 控件相關的類,但是我vc卻不照網上那樣實現,所以在頭兩天是在摸索中,耗費了很多時間,最后我先不管第一步,直接插入控件,然后發(fā)現關聯變量時會有提示要插入17個類,點確定就行,問題就這么解決了。然后我和同組的同學在網上找相應的資料,找到怎樣在VC

34、+6.0里加入控件,各個控件的說明書。進過比較和分析,我們一致采用Windows Media Player多媒體軟件旗下的控件WMP控件。因為WMP控件本身就是微軟自帶的控件,不存在兼容問題。還有每個電腦多都有Windows Media Player播放器,其控件也都注冊了。知道怎樣使用WMP控件,就可以很輕松地完成軟件流程圖的設計。我結合了自己在網上搜索的資料,做好了整個多媒體播放器的整體設計,確定了軟件的框架、主要構件以及構件之間的關聯,而后由總體設計逐漸深入完成軟件的詳細設計和開發(fā)過程。編寫代碼更加有條理,才會更加符合軟件工程的標準。整個程序設計我做了兩天,每天熬夜到1點多,也學會了不少

35、東西。最后終于變好了,編寫的軟件可以滿足課程設計給出的要求。系統能選擇打開、播放、暫停、停止音頻文件和視頻文件,并能控制聲音的大小, 可以播放*.mp3、 *.wma、 *.mdi、 *.wav、 *avi、 *dat 等格式的多媒體文件。看到點擊每一個按鈕都能有相應的反應,頓時有了一種莫名的成就感,也感覺到自己的汗水得到了回報。紙上得來終覺淺,絕知此事要躬行。要想完成一項作品,并不是想的那樣簡單,做起來總是會遇到問題的,這時就需要要解決問題的能力和堅持不懈的決心。通過本次試驗,我收獲了很多,對面向對象程序設計這門課所學的知識有了更好的理解。書山有路勤為徑,學海無涯苦作舟。5參考文獻1揣錦華.

36、面向對象程序設計與 VC+實踐M.西安電子科技大學出版社.20052鄭阿奇.Visual C+教程M.北京:機械工業(yè)出版社.20043周長發(fā).Visual C+.NET 多媒體編程M.電子工業(yè)出版社.20024Steve Mack.流媒體寶典.電子工業(yè)出版社.20035王育堅.Visual C+面向對象編程教程.第 2 版.北京:清華大學出版社,20086思考題1) 控件自帶的類和本程序中的類是如何共同作用的?答:控件自帶的的類肯定會在對話框的主程序中被調用,那么就要在主程序中#include入對應類的頭文件。對需要用到的類生成對應的對象以實現類中函數的使用。調用了控件類中的函數后,還需要調用

37、對話框自身的函數,比如消息及消息響應函數等函數,以及各控件對應的消息響應函數。如此便可以實現控件自帶類和本程序中的類的共同作用。2) 說明程序中調用的控件函數的作用?答:控件的不同類有不同的函數與之對應,不同函數有不同的功能。其函數功能見表。表5控件函數和對應的功能功能控件函數功能控件函數打開OnBUTTONopen()進度刷新OnTimer()播放OnBUTTONplay()停止 OnBUTTONstop()暫停OnBUTTONpause()上一首 OnBUTTONpre()快進OnBUTTONFastforward下一首OnBUTTONnext()快退OnBUTTONFastreverse

38、()保存列表OnBUTTONsave()聲音滑塊OnReleasedcaptureSlider1()清空列表OnBUTTONclear()全屏OnBUTTONfullscreen()進度控制OnHScroll()7 附錄7.1調試報告7.1.1 調試一運行時錯誤指明如下如圖所示:圖9 調試一錯誤提示錯誤提示為:use of undefined type 'CWMPControls'。在這行代碼中,我用控件變量m_player調用GetControls()函數來獲得CWMPControls類的對象以調用該的成員函數pause()函數,根據錯誤提示可知,我這行代碼是寫在視圖類中,調

39、用pause()屬于類外調用,但是該類不認識CWMPControls類,所以要在視圖類的最前面要加個頭文件#include "wmpcontrols.h"。7.1.2 調試二在調試播放列表時,看到播放列表中顯示了路徑感覺沒有必要,所以修改了代碼使只把歌曲名給了代碼。但這樣再來播放列表上的歌曲時不能播放。圖10調試二的說明圖原因:是因為播放列表上只有歌曲名,沒了路徑的話是不能找到文件的,所以不能播放。所以解決方法是修改代碼使其把歌曲路徑遞給播放列表。但后來聽老師的解說,可以通過取字符串函數來從路徑里取文件名。即播放列表中儲存的是路徑,但顯示的是路徑中文件名。7.2 測試結果編

40、寫好的軟件能選擇打開、播放、暫停、停止音頻文件和視頻文件,并能控制聲音的大小,以及播放的進度,可以播放*.mp3、 *.wma、 *.mdi、 *.wav、 *avi、 *dat 等格式的多媒體文件。同時還具有自制的播放列表,可以按照列表上的順序進行一曲、下一曲的播放,同時還有保存列表和刪除歌曲的作用。圖11播放器播放音樂展示圖12播放器隱藏列表展示7.3 關鍵源代碼void CYLJ_Media_PlayerDlg:OnBUTTONopen() char szFileFilter="所有支持類型|*.mp3;*.mp4;*.wma;*.dat;*.wav;*.avi;*.mov;*

41、.rmvb;*.mmm;*.mid;*.rmi;*.mpeg;*.mpg|""Mp3 File(*.mp3)|*.mp3|""Mp4 File(*.mp4)|*.mp4|""Wma File(*.wma)|*.wma|""Video File(*.dat)|*.dat|""Wave File(*.wav)|*.wav|""AVI File(*.avi)|*.avi|""Movie File(*.mov)|*.mov|""Rmvb Fil

42、e(*.rmvb)|*.rmvb|""Media File(*.mmm)|*.mmm|""Mid File(*.mid;*,rmi)|*.mid;*.rmi|""MPEG File(*.mpeg)|*.mpeg|""MPG File(*.mpg)|*.mpg|""All File(*.*)|*.*|"/文件類型過濾CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);POSITION pos=dlg.GetStart

43、Position();if(dlg.DoModal()=IDOK)while(pos!=NULL)m_PathName=dlg.GetNextPathName(pos);m_list2.AddString(m_PathName);void CYLJ_Media_PlayerDlg:OnBUTTONpanse() flag2=!flag2;if(flag2) m_player.GetControls().pause();elsem_player.GetControls().play();void CYLJ_Media_PlayerDlg:OnBUTTONplay() CString str;in

44、t index=m_list2.GetCurSel();m_list2.GetText(index,str);m_player.SetUrl(str);void CYLJ_Media_PlayerDlg:OnBUTTON4mute() n=!n;if (n)vol=m_player.GetSettings().GetVolume();/ 獲取當前音量值m_player.GetSettings().SetMute(TRUE);/設為靜音elsem_player.GetSettings().SetMute(FALSE);/解除靜音m_player.GetSettings().SetVolume(v

45、ol);/恢復當前音量值void CYLJ_Media_PlayerDlg:OnBUTTONpre() CString str;int index=m_list2.GetCurSel()-1;/光標減一if(index<0) index=m_list2.GetCount()-1;/如果播放完第一曲就自動播放最后一首m_list2.GetText(index,str);/獲得當前光標所指的路徑字符串m_player.SetUrl(str);/開始播放上一首m_list2.SetCurSel(index);/自動置光標void CYLJ_Media_PlayerDlg:OnBUTTONnex

46、t() CString str;int index=m_list2.GetCurSel()+1; /光標加一if(index>=m_list2.GetCount() index=0;/如果播放完最后一曲就自動播放第一首m_list2.GetText(index,str); /獲得當前光標所指的路徑字符串m_player.SetUrl(str); /開始播放下一首m_list2.SetCurSel(index);/自動置光標void CYLJ_Media_PlayerDlg:OnBUTTONshow() flag=!flag;if(flag) SetWindowPos(NULL,0,0,500,520,SWP_NOMOVE);else SetWindowPos(NULL,0,0,702,520,SWP_NOMOVE);void CYLJ_Media_PlayerDlg:OnDblclkListMenu() CString str;int index=m_list2.GetCurSel();m_l

溫馨提示

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

評論

0/150

提交評論