基于VC的多媒體播放器的設(shè)計(jì)與開(kāi)發(fā)(共29頁(yè)).doc_第1頁(yè)
基于VC的多媒體播放器的設(shè)計(jì)與開(kāi)發(fā)(共29頁(yè)).doc_第2頁(yè)
基于VC的多媒體播放器的設(shè)計(jì)與開(kāi)發(fā)(共29頁(yè)).doc_第3頁(yè)
基于VC的多媒體播放器的設(shè)計(jì)與開(kāi)發(fā)(共29頁(yè)).doc_第4頁(yè)
基于VC的多媒體播放器的設(shè)計(jì)與開(kāi)發(fā)(共29頁(yè)).doc_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、存檔編號(hào) 基于VC的多媒體播放器的設(shè)計(jì)與開(kāi)發(fā)教學(xué)學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院屆 別 2013屆 專(zhuān) 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué) 號(hào) 姓 名 指導(dǎo)教師 完成日期 2013.5.3 目錄摘要1關(guān)鍵詞:1Abstract2Key words:21. 引言31.1 MFC簡(jiǎn)介31.2 ActiveX Control介紹42. 需求分析42.1 功能需求分析42.2 性能需求分析52.3 運(yùn)行需求分析53. 系統(tǒng)總體設(shè)計(jì)53.1 總體設(shè)計(jì)53.2總體設(shè)計(jì)層次圖74. 詳細(xì)設(shè)計(jì)74.1基本界面設(shè)置84.2打開(kāi)文件與添加列表控制設(shè)置84.3播放控制控件設(shè)置84.4對(duì)列表的控制控件設(shè)置84.5菜單控件設(shè)置94.6程

2、序設(shè)計(jì)的詳細(xì)說(shuō)明95. 編碼實(shí)現(xiàn)125.1 ActiveX控件在播放器中應(yīng)用125.2 主要實(shí)現(xiàn)原理及程序136.總結(jié)26參考文獻(xiàn)27摘要本畢業(yè)設(shè)計(jì)“多媒體播放軟件設(shè)計(jì)”就是為了設(shè)計(jì)一個(gè)簡(jiǎn)單實(shí)用的播放器。首先是利用VC系統(tǒng)的ActiveX控件來(lái)實(shí)現(xiàn)基礎(chǔ)的播放媒體功能。其次,是通過(guò)分析媒體播放的具體過(guò)程,在打開(kāi)媒體設(shè)備的過(guò)程中應(yīng)用程序需要做哪些事情,在應(yīng)用程序中加入對(duì)這些過(guò)程支持的代碼。再次,對(duì)應(yīng)用程序的流程構(gòu)造大致的輪廓,再完善程序框架的設(shè)計(jì),應(yīng)用程序外觀的設(shè)計(jì)。最后,也是最關(guān)鍵的就是編寫(xiě)實(shí)現(xiàn)播放媒體的代碼將播放器的基本功能實(shí)現(xiàn)。本軟件與其他同類(lèi)型的多媒體播放器相比,具有體積小、支持的播放格式

3、多、系統(tǒng)資源占有少的優(yōu)勢(shì)。同時(shí)支持文件的打開(kāi)、保存、刪除等功能。雖然體積很小,但是基本完成了對(duì)常見(jiàn)音頻、視頻媒體的播放功能。此篇論文主要闡述的是系統(tǒng)設(shè)計(jì)時(shí)所做的一些工作,包括對(duì)系統(tǒng)的需求分析,系統(tǒng)的總體設(shè)計(jì)以及系統(tǒng)的詳細(xì)設(shè)計(jì),詳細(xì)說(shuō)明了系統(tǒng)的一些常用的功能及特性,以便用戶(hù)使用。關(guān)鍵詞:VC ActiveX 多媒體 系統(tǒng)設(shè)計(jì)AbstractMy design" multimedia broadcast software design " in order to design a practical player Have solved MCI function and ord

4、ered the name type of news and function problem at first. Secondly, it is through analyzing the concrete course that the media broadcasts, what things application program needs doing during the process of turning on apparatus of media, add the code supported to the course into application program. M

5、oreover, to the procedure structure roughly outline of the application program, and then improve the design of the procedure frame, design of the appearance of the application program. Finally, a key one to write, realize code to show the media realize the basic function of the player most too. Comp

6、ared to this software with other same type multimedia player, have small, form of broadcasting supported more, systematic resources occupy few advantages. Support the tabulation of broadcasting to edit, support the function of opening, save of the file at the same time.Though the volume is very smal

7、l, the one that has finished to the common audio frequency , video media basically has broadcast the function.Mainly elaborates this thesis is of some work done while designing the system, including the analysis of the demand of the system, detailed design, system design and system, and explains som

8、e common functions and characteristics of the system, so that the user use. Key words: VC ActiveX Multimedia System Design1. 引言多媒體技術(shù)的概念和應(yīng)用出現(xiàn)于20世紀(jì)80年代初期,經(jīng)過(guò)十余年的發(fā)展,隨著計(jì)算機(jī)科學(xué)網(wǎng)絡(luò)的普及和多媒體技術(shù)的發(fā)展,已成為計(jì)算機(jī)領(lǐng)域發(fā)展的熱點(diǎn)技術(shù),針對(duì)目前各種媒體格式,如何簡(jiǎn)單方便的播放各類(lèi)媒體已成為人們普遍關(guān)注的問(wèn)題,而媒體播放器的開(kāi)發(fā)也變得十分重要。綜合以上,我決定以VC為平臺(tái)、C+為背景開(kāi)發(fā)一款適合大眾的小型多媒體播放器。1.1 MFC簡(jiǎn)介

9、MFC(Microsoft Foundation Classes),是一個(gè)微軟公司提供的類(lèi)庫(kù)(class libraries),以C+類(lèi)的形式封裝了Windows的API,并且包含一個(gè)應(yīng)用程序框架,以減少應(yīng)用程序開(kāi)發(fā)人員的工作量。其中包含的類(lèi)包含大量Windows句柄封裝類(lèi)和很多Windows的內(nèi)建控件和組件的封裝類(lèi)。MFC 是Win API與C+的結(jié)合,API,即微軟提供的Windows下應(yīng)用程序的編程語(yǔ)言接口,是一種軟件編程的規(guī)范,但不是一種程序開(kāi)發(fā)語(yǔ)言本身,可以允許用戶(hù)使用各種各樣的第三方(如我是一方,微軟是一方,Borland就是第三方)的編程語(yǔ)言來(lái)進(jìn)行對(duì)Windows下應(yīng)用程序的開(kāi)發(fā)

10、,使這些被開(kāi)發(fā)出來(lái)的應(yīng)用程序能在Windows下運(yùn)行.這種結(jié)合一方面讓用戶(hù)使用微軟的專(zhuān)業(yè)C+ SDK來(lái)進(jìn)行Windows下應(yīng)用程序的開(kāi)發(fā)變得容易,因?yàn)镸FC是對(duì)API的封裝,微軟做了大量的工作,隱藏了好多程序開(kāi)發(fā)人員在Windows下用C+ & MFC編制軟件時(shí)的大量?jī)?nèi)節(jié),如應(yīng)用程序?qū)崿F(xiàn)消息的處理,設(shè)備環(huán)境繪圖,這種結(jié)合是以方便為目的的,必定要付出一定代價(jià)(這是微軟的一向作風(fēng)),因此就造成了MFC對(duì)類(lèi)封裝中的一定程度的冗余和迂回,但這是可以接受的。1.2 ActiveX Control介紹ActiveX 控件,一個(gè)類(lèi)似于復(fù)選框或按鈕的控件,可向用戶(hù)提供選項(xiàng)或運(yùn)行自動(dòng)執(zhí)行任務(wù)的宏或腳本。

11、可以在 Microsoft Visual Basic for Applications 中為控件編寫(xiě)宏,或在 Microsoft 腳本編輯器中編寫(xiě)腳本。 2. 需求分析2.1 功能需求分析圖2-1 功能需求圖(1) 播放視頻文件:用戶(hù)可以通過(guò)該軟件播放任意格式(例如 avi、rmvb、rm等格式)的視頻文件。(2) 播放音頻文件:用戶(hù)可以播放常規(guī)(mp3格式)的音頻文件。(3) 文件列表顯示:用戶(hù)通過(guò)添加音頻視頻文件將在列表顯示并告知用戶(hù)正在播放的曲目。(4) 音量大小控制:用戶(hù)可以通過(guò)音量增大按鈕和音量減小按鈕來(lái)控制音量大小。2.2 性能需求分析(1)流暢性。音頻文件和視頻文件能流暢的播放。

12、(2)穩(wěn)定性。程序運(yùn)行穩(wěn)定,占用內(nèi)存小,不會(huì)出現(xiàn)崩潰的情況。(3)模塊化。播放器各個(gè)模塊劃分清晰,用戶(hù)操作方便。2.3 運(yùn)行需求分析(1)硬件要求:內(nèi)存:512MB以上,CPU:2.20GHz,磁盤(pán)空間:20MB。(2)系統(tǒng)要求:Windows7 旗艦版 32位操作系統(tǒng)。3. 系統(tǒng)總體設(shè)計(jì)3.1 總體設(shè)計(jì)1) 界面設(shè)置 按鈕類(lèi)聲明 ActiveX控件類(lèi)聲明 對(duì)話(huà)框類(lèi)聲明 基本界面的圖形設(shè)置(根據(jù)圖形設(shè)置界面)2) 打開(kāi)文件與添加列表 播放列表 添加文件3) 播放控制 打開(kāi) 播放 暫停停止音量增大 音量減小 循環(huán)全屏 播放進(jìn)程控制 退出4) 對(duì)列表控制 添加文件 保存列表 列表中的雙擊播放列表的

13、擴(kuò)展 刪除文件保存方式5) 菜單設(shè)置(菜單是從按鈕出來(lái),而不是原來(lái)意義的直接添加在對(duì)話(huà)框上) 菜單按鈕 控制按鈕 播放列表按鈕3.2總體設(shè)計(jì)層次圖系統(tǒng)總體設(shè)計(jì)層次圖如圖3-2所示。圖3-2 總體設(shè)計(jì)層次圖4. 詳細(xì)設(shè)計(jì)最初運(yùn)用MFC,建立對(duì)話(huà)框?yàn)榛究蚣?。因?yàn)楸拒浖且韵到y(tǒng)自帶的ActiveX控件為基礎(chǔ),所以將本軟件的設(shè)計(jì)重點(diǎn)和難點(diǎn)放在了功能設(shè)計(jì)方面。4.1基本界面設(shè)置在基本界面確定后,添加各類(lèi)控件。按鈕定義為CButtom按鈕類(lèi),播放控件定義為CActiveMovie3類(lèi),基礎(chǔ)類(lèi)以CDialog為父類(lèi)的CMediaPlayerDlg類(lèi),列表框?yàn)镃ListBox類(lèi)。4.2打開(kāi)文件與添加列表控制

14、設(shè)置打開(kāi)文件有兩種方法,一是通過(guò)主面板上打開(kāi)按鈕,二是通過(guò)菜單中文件的子菜單打開(kāi)文件。添加文件:CButton,IDC_ADD4.3播放控制控件設(shè)置播放控制包括:播放,暫停,停止,音量增大,音量減小,循環(huán),全屏,打開(kāi),退出。播放控制也可在菜單中進(jìn)行控制。 播放:CButton,IDC_PLAY 暫停:CButton,IDC_PAUSE 停止:CButton,IDC_STOP 音量增大:CButton,IDC_LOWER 音量減?。篊Button,IDC_UPPER 循環(huán):CButton,IDC_REPEAT 全屏:CButtom,IDC_FULLSCREEN 打開(kāi):CButton,IDC_OP

15、EN 退出:CButton,IDCANCEL4.4對(duì)列表的控制控件設(shè)置列表的控制包括:添加文件,刪除當(dāng)前所選項(xiàng),保存列表,保存方式,在列表中雙擊播放,列表的擴(kuò)展。設(shè)置如下。 添加文件:CButton,IDC_ADD 刪除當(dāng)前所選項(xiàng):CButton,IDC_DEL 保存列表:CButton,IDC_SAVELIST 保存方式: IDC_RADIO1,/自動(dòng)保存。IDC_RADIO2,/手動(dòng)保存。 列表中的雙擊播放:LISTBOX本身的LBN_DBLCLK消息函數(shù)OnDblclkList() 列表的擴(kuò)展:m_list.SetHorizontalExtent(1000);4.5菜單控件設(shè)置除去上述菜

16、單控制之外,菜單中還包括音量控制、模式控制和列表控制。 音量控制:IDC_LOWER,/音量減小IDC_UPPER,/音量增大 模式控制:IDC_REPEAT,/循環(huán)控制IDC_FULLSCREEN,/全屏 列表控制:IDC_OPENLIST,/播放列表4.6程序設(shè)計(jì)的詳細(xì)說(shuō)明1)界面設(shè)置各個(gè)自定義類(lèi)的聲明:CButton類(lèi):按鈕類(lèi)聲明。CActiveMovie3類(lèi):ActiveX控件類(lèi)聲明。CDialog類(lèi):對(duì)話(huà)框類(lèi)聲明。在主對(duì)話(huà)框的類(lèi)定義中聲明:public:void MoveMovieWindow();/界面初始化在主對(duì)話(huà)框的初始化程序里調(diào)用該函數(shù),具體定義請(qǐng)參照程序中函數(shù),BOOL i

17、sRepeat;/循環(huán)控制標(biāo)識(shí)控制循環(huán)模式的標(biāo)識(shí),通過(guò)此標(biāo)識(shí)識(shí)別系統(tǒng)狀態(tài):?jiǎn)吻蛑貜?fù)。并在系統(tǒng)界面顯示狀態(tài)。2)打開(kāi)文件函數(shù)設(shè)置由按鈕的BN_CLICKED消息函數(shù)控制。程序詳見(jiàn)void CMediaPlayerDlg:OnOpen()/打開(kāi)文件3)列表函數(shù)設(shè)置列表文件的程序主要寫(xiě)在按鈕的BN_CLICKED消息函數(shù)里面。程序詳見(jiàn)void CMediaPlayerDlg:OnAdd()/添加列表void CMediaPlayerDlg:OnSavelist()/保存列表void CMediaPlayerDlg:OnOpenlist()/播放列表的打開(kāi)與關(guān)閉4)播放控制函數(shù)設(shè)置 播放:void

18、CMediaPlayerDlg:OnPlay() 暫停:void CMediaPlayerDlg:OnPause() 停止:void CMediaPlayerDlg:OnStop() 音量增大:void CMediaPlayerDlg:OnUpper() 音量減?。簐oid CMediaPlayerDlg:OnLower() 循環(huán):void CMediaPlayerDlg:OnRepeat() 循環(huán)控制:BOOL isRepeat; 全屏:void CMediaPlayerDlg:OnFullscreen() 退出:BOOL CMediaPlayerApp:InitInstance()5)列表

19、控制函數(shù)設(shè)置 添加文件:CButton,IDC_ADD,此函數(shù)同上述打開(kāi)文件OnAdd()。 保存列表:CButton,IDC_SAVELIST,此函數(shù)同上述保存文件列表OnSavelist()。 列表的擴(kuò)展:在OnInitDialog()函數(shù)中添加如下代碼。m_list.SetHorizontalExtent(1000); 列表中的雙擊播放:LISTBOX本身的LBN_DBLCLK消息函數(shù)OnDblclkListP()。void CMediaPlayerDlg:OnDblclkListP() 列表的隱藏彈出:同上述列表函數(shù)的播放列表的打開(kāi)與關(guān)閉函數(shù)OnOpenlist()。void CMed

20、iaPlayerDlg:OnOpenlist()6)菜單控制函數(shù)設(shè)置菜單是從按鈕出來(lái),而不是原來(lái)意義的直接添加在對(duì)話(huà)框上。 菜單按鈕:void CMediaPlayerDlg:OnMenu() 音量控制:void CMediaPlayerDlg:OnLower()/音量減小void CMediaPlayerDlg:OnUpper() /音量增大 模式控制:void CMediaPlayerDlg:OnFullscreen()/全屏void CMediaPlayerDlg:OnRepeat()/單曲或重復(fù) 列表控制:void CMediaPlayerDlg:OnOpenlist()5. 編碼實(shí)現(xiàn)

21、5.1 ActiveX控件在播放器中應(yīng)用目前視頻播放器很多,可以播放各種各樣的文件和流,但大多只支持一個(gè)文件或一個(gè)流播放,若要播放多個(gè)文件就需手工打開(kāi)多個(gè)播放器。在現(xiàn)實(shí)的應(yīng)用中,為了實(shí)現(xiàn)多流播放,實(shí)際上是直接將媒體流打包輸入到計(jì)算機(jī)的通信接口上,由多個(gè)播放器進(jìn)程進(jìn)行播放,這樣做只適應(yīng)于播放無(wú)關(guān)聯(lián)的媒體流,如多路視頻監(jiān)控,多人會(huì)議系統(tǒng)等。而對(duì)于相關(guān)聯(lián)的媒體流,目前市場(chǎng)上的視頻播放器就不能實(shí)現(xiàn)多個(gè)視頻文件流的控制和同步。在對(duì)多流媒體同步播放技術(shù)研究的基礎(chǔ)上,通過(guò)對(duì)流媒體服務(wù)器的設(shè)置,進(jìn)行了多流媒體播放器的開(kāi)發(fā)。多流媒體播放器可以接收多流媒體服務(wù)器的碼流并對(duì)其進(jìn)行解碼和控制,同時(shí)對(duì)相關(guān)流進(jìn)行同步,改

22、進(jìn)了播放器的內(nèi)部結(jié)構(gòu)和播放器的用戶(hù)界面。將其移植成ActiveX控件后,通過(guò)對(duì)4個(gè)媒體流的同步播放測(cè)試,證實(shí)用ActiveX控件設(shè)計(jì)的播放器運(yùn)行性能良好。ActiveX是一種技術(shù)集合。利用ActiveX,開(kāi)發(fā)者幾乎可以利用任何熟悉的工具產(chǎn)生多媒體效果、交互式功能及復(fù)雜的應(yīng)用程序。其優(yōu)點(diǎn)在于開(kāi)放的跨平臺(tái)支持,可以運(yùn)行在Macintosh,Windows 和UNIX操作系統(tǒng)上,支持Visual Basic、Visual C+、Borland Delphi、Borland C+、java and Java-enabledtools等各種工具,支持HTML,TCP/IP,Java,COM和其他工業(yè)標(biāo)準(zhǔn)

23、。 ActiveX的技術(shù)包括用戶(hù)能夠在瀏覽器之中瀏覽非HTML文檔(如word文檔);能夠被插入網(wǎng)頁(yè)或任何稱(chēng)作控件容器庫(kù)的應(yīng)用程序之中的對(duì)象(如按鈕、直方圖);可以在整個(gè)客戶(hù)區(qū)域以框架形式顯示文檔;能夠定制來(lái)源于數(shù)據(jù)庫(kù)或是一個(gè)在服務(wù)器上運(yùn)行的程序的網(wǎng)頁(yè)內(nèi)容;可以將處理過(guò)程從服務(wù)器方移至客戶(hù)方。5.2 主要實(shí)現(xiàn)原理及程序1)文件處理過(guò)程演示文件處理過(guò)程如圖5-1所示。圖5-1 文件處理過(guò)程演示圖主要實(shí)現(xiàn)代碼如下所示。void CMediaPlayerDlg:OnOpen() char szFileFilter="所有支持類(lèi)型|*.mp3;*.wma;*.dat;*.wav;*.avi;

24、*.mov;*.rmvb;*.mmm;*.mid;*.rmi;*.mpeg|""Mp3 File(*.mp3)|*.mp3|""Wma File(*.wma)|*.wma|""Video File(*.dat)|*.dat|""Wave File(*.wav)|*.wav|""AVI File(*.avi)|*.avi|""Movie File(*.mov)|*.mov|""Rmvb File(*.rmvb)|*.rmvb|""Medi

25、a File(*.mmm)|*.mmm|""Mid File(*.mid;*,rmi)|*.mid;*.rmi|""MPEG File(*.mpeg)|*.mpeg|""All File(*.*)|*.*|"/文件類(lèi)型過(guò)濾CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);if(dlg.DoModal()=IDOK)CString PathName=dlg.GetPathName();PathName.MakeUpper();m_ActiveMovie.

26、SetFileName(PathName);m_list.AddString(PathName);OnPlay();2)主界面實(shí)現(xiàn)主界面設(shè)計(jì)如圖5-2所示。圖5-2 主界面設(shè)計(jì)對(duì)照?qǐng)D根據(jù)上圖設(shè)計(jì)主界面,主要實(shí)現(xiàn)代碼如下。BOOL CMediaPlayerDlg:OnInitDialog()CDialog:OnInitDialog();ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMe

27、nu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);SetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small iconVolume=m_ActiveMovie.GetV

28、olume()+652;CString str1;str1.Format(_T("%ld"),Volume);SetDlgItemText(IDC_STATIC3,str1);SetWindowPos(NULL,0,0,800,570,SWP_NOMOVE);m_list.SetHorizontalExtent(1000);CStdioFile *fsp=new CStdioFile(".list.txt",CFile:modeRead);CString str;while(fsp->ReadString(str)m_list.AddString(

29、str);fsp->Close();delete fsp;MoveMovieWindow();return TRUE; / return TRUE unless you set the focus to a control3)消息處理程序中各個(gè)按鍵及打開(kāi)、保存、刪除、添加等消息處理示意如圖5-3所示。圖5-3 消息處理示意圖軟件在運(yùn)行中每個(gè)動(dòng)作都要得到響應(yīng),也就是每個(gè)動(dòng)作都會(huì)有一個(gè)消息,通過(guò)對(duì)每個(gè)消息的處理才能保證軟件正常的工作,也就是線(xiàn)程的控制代碼如下。void CMediaPlayerDlg:OnPlay() / TODO: Add your control notification

30、 handler code hereif (p_flag=0) m_ActiveMovie.SetFileName(m_pathname);/播放列表文件elsem_ActiveMovie.Run();/播放文件SetTimer(0,20,NULL);/設(shè)置定時(shí)器void CMediaPlayerDlg:OnPause() / TODO: Add your control notification handler code herep_flag=1;m_ActiveMovie.Pause();/暫停播放void CMediaPlayerDlg:OnStop() / TODO: Add your

31、 control notification handler code herep_flag=0;m_ActiveMovie.Stop();/停止播放文件KillTimer(0);/關(guān)掉定時(shí)器void CMediaPlayerDlg:OnCancel() / TODO: Add extra cleanup hereCDialog:OnCancel();void CMediaPlayerDlg:OnLower() j=0;if(i=0)m+;n-;/ TODO: Add your control notification handler code hereVolume=m_ActiveMovie.

32、GetVolume();if (m>5) AfxMessageBox("音量最小了!");i=1;else/m_ActiveMovie.Pause();m_ActiveMovie.SetVolume(Volume-100);/m_ActiveMovie.Run();Volume=(Volume+502)/10+50;CString str;str.Format(_T("%ld"),Volume);SetDlgItemText(IDC_STATIC3,str);elseAfxMessageBox("音量最小了!");void CM

33、ediaPlayerDlg:OnUpper() i=0;if(j=0)m-;n+;/ TODO: Add your control notification handler code hereVolume=m_ActiveMovie.GetVolume();if (n>6) AfxMessageBox("音量最大了!");j=1;/n=0;else/m_ActiveMovie.Pause();m_ActiveMovie.SetVolume(Volume+100);/m_ActiveMovie.Run();Volume=(Volume+702)/10+50;CStrin

34、g str;str.Format(_T("%ld"),Volume);SetDlgItemText(IDC_STATIC3,str);elseAfxMessageBox("音量最大了!");void CMediaPlayerDlg:OnFullscreen() / TODO: Add your control notification handler code herem_ActiveMovie.Pause();m_ActiveMovie.SetFullScreenMode(true);m_ActiveMovie.SetMovieWindowSize(S

35、W_SHOWMAXIMIZED);m_ActiveMovie.Run();void CMediaPlayerDlg:OnRepeat() / TODO: Add your control notification handler code hereif(!isRepeat)isRepeat=TRUE;SetDlgItemText(IDC_STATIC2,"模式:循環(huán)");elseisRepeat=FALSE;SetDlgItemText(IDC_STATIC2,"模式:單曲");void CMediaPlayerDlg:OnTimer(UINT nIDE

36、vent) / TODO: Add your message handler code here and/or call defaultdouble CurrentPos=m_ActiveMovie.GetCurrentPosition();if(CurrentPos=0&&isRepeat)/如果當(dāng)前是文件的起始位置而且為重復(fù)播放狀態(tài)m_ActiveMovie.Run();CDialog:OnTimer(nIDEvent);void CMediaPlayerDlg:MoveMovieWindow()CRect rc1, rc2, rc3;/ 得到 ActiveMovie 控件

37、的大小m_ActiveMovie.GetWindowRect(rc1);/ 保證對(duì)話(huà)框客戶(hù)區(qū)的寬不小于 300 像素,高不小于 225 像素if (rc1.Width()<300 | rc1.Height()<225)rc1.right=rc1.left+300;rc1.bottom=rc1.top+225;/ 獲得對(duì)話(huà)框的大小GetWindowRect(rc2);/ 獲得對(duì)話(huà)框客戶(hù)區(qū)的大小GetClientRect(rc3);m_ActiveMovie.GetWindowRect(rc1);GetClientRect(rc3);/ 使 ActiveMovie 控件在對(duì)話(huà)框的客戶(hù)區(qū)

38、居中m_ActiveMovie.MoveWindow(rc3.Width()-rc1.Width()/2,(rc3.Height()-rc1.Height()/2-50, rc1.Width(), rc1.Height();void CMediaPlayerDlg:OnOpenlist() / TODO: Add your control notification handler code hereflag=!flag;if (!flag) SetWindowPos(NULL,0,0,800,570,SWP_NOMOVE);elseSetWindowPos(NULL,0,0,1010,570,

39、SWP_NOMOVE);void CMediaPlayerDlg:OnAdd() char szFileFilter="媒體文件(*.avi,*.mp3,*.wma)|*.avi;*.mp3;*.wma|"CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT|OFN_NOCHANGEDIR,szFileFilter);POSITION pos=dlg.GetStartPosition();if(dlg.DoModal()=IDOK) while(pos!=NULL)m_pathname=dl

40、g.GetNextPathName(pos);m_list.AddString(m_pathname);if (r_flag=1) OnSavelist();void CMediaPlayerDlg:OnDblclkListP() CString str;int index=m_list.GetCurSel();m_list.GetText(index,str);m_ActiveMovie.SetFileName(str);OnPlay();m_pathname=str;void CMediaPlayerDlg:OnSavelist() CStdioFile file;file.Open(&q

41、uot;.list.txt",CFile:modeCreate|CFile:modeReadWrite|CFile:typeText);for(int i=0;i<m_list.GetCount();i+)CString strtemp;m_list.GetText(i,strtemp);strtemp+="n"/需要換行file.WriteString(strtemp);file.Close();AfxMessageBox("保存成功!");void CMediaPlayerDlg:OnDel() int index1=m_list.G

42、etCurSel();m_list.DeleteString(index1);if (r_flag=1) OnSavelist();void CMediaPlayerDlg:OnRadio1() r_flag=0;void CMediaPlayerDlg:OnRadio2() r_flag=1;void CMediaPlayerDlg:OnOpenfile() ShellExecute(NULL, _T("open"), _T("d:MPlayerDebuglist.txt"), NULL, NULL, SW_SHOW);void CMediaPlayerDlg:OnS

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論