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

下載本文檔

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

文檔簡介

1、<p><b>  多媒體編程實(shí)習(xí)報(bào)告</b></p><p>  選題名稱: 視頻播放器設(shè)計(jì) </p><p>  系(院): 計(jì)算機(jī)工程學(xué)院</p><p>  專 業(yè): 通信工程(多媒體通信方向) </p><p>  班 級(jí):

2、 </p><p>  姓 名: 學(xué) 號(hào): </p><p>  指導(dǎo)教師: </p><p>  學(xué)年學(xué)期: 2012 ~ 2013 學(xué)年第 2 學(xué)期</p><p>  2013 年 06 月 30 日&

3、lt;/p><p><b>  實(shí)習(xí)任務(wù)書</b></p><p><b>  一、實(shí)習(xí)目的</b></p><p>  1、鞏固多媒體編程所涉及的基礎(chǔ)理論和經(jīng)典技術(shù),努力提高實(shí)踐動(dòng)手能力;</p><p>  2、學(xué)習(xí)多媒體編程,進(jìn)一步掌握VC6.0的使用方法和技術(shù);</p><p

4、>  3、通過一個(gè)完整的項(xiàng)目開發(fā)流程,構(gòu)建合理的專業(yè)技能結(jié)構(gòu),完善知識(shí)體系;</p><p>  4、強(qiáng)化軟件設(shè)計(jì)概念,訓(xùn)練文檔處理能力,培養(yǎng)團(tuán)隊(duì)合作精神;</p><p>  5、加深對于多媒體軟件功能的理解;</p><p>  6、激發(fā)學(xué)生對于多媒體相關(guān)技術(shù)的興趣。</p><p><b>  二、實(shí)習(xí)時(shí)間</b&

5、gt;</p><p>  2013年06月17日~2013年06月30日。</p><p><b>  三、實(shí)習(xí)地點(diǎn)</b></p><p>  淮陰工學(xué)院計(jì)算機(jī)工程學(xué)院及所屬專業(yè)實(shí)驗(yàn)室。</p><p><b>  四、實(shí)習(xí)內(nèi)容</b></p><p> ?。ㄒ唬┰O(shè)計(jì)課題

6、:視頻播放器</p><p><b>  (二)設(shè)計(jì)目標(biāo):</b></p><p>  使用VC++6.0強(qiáng)大的AppWizard、Class Wizard和其中的多種控件可以很方便地建立各種應(yīng)用程序。借助ActiveX控件資源和其他現(xiàn)有的控件資源,可以省去自己編程的復(fù)雜過程,從而實(shí)現(xiàn)高級(jí)的功能。本次課程設(shè)計(jì)要使用VC++6.0內(nèi)部的ActiveX控件——Window

7、s Media Player控件,建立自己的多媒體播放器。此多媒體播放器具有打開文件、播放、暫停、關(guān)閉、全屏、音量滑塊調(diào)節(jié)、快進(jìn)、快退等基本功能,可以播放*.mp3、*.wma、*.mdi、*.wav、*avi、*dat等格式的多媒體文件。 </p><p><b>  (三)設(shè)計(jì)過程:</b></p><p><b>  1、設(shè)計(jì)思路:</b>

8、</p><p>  基于VC++6.0制作多媒體播放器,主要使用了Windows Media Player控件和各種類型按鈕,控件Windows Media Player完成了由其他控件加載的多媒體文件的解碼,以及完成由其他控件提交的控制信息的響應(yīng)。 </p><p>  根據(jù)Windows Media Player和各個(gè)按鈕控件功能的特點(diǎn),首先要在初始化中對CWMPControl,CW

9、MPSettings, CWMPMedia等類的對象進(jìn)行綁定和定義。 </p><p>  播放器的一些基本的功能如播放、暫停、全屏、靜音、快進(jìn)、快退等主要是調(diào)用CWMPControl和CWMPPlayer類中的成員函數(shù)來進(jìn)行實(shí)現(xiàn)。對于打開按鈕,需要調(diào)用通用文件對話框類,調(diào)用szFileFilter()文件過濾函數(shù)和GetFileName()獲取文件名函數(shù)。 </p><p>  音量滑動(dòng)

10、條Slinder 是通過對CSliderCtrl類進(jìn)行初始化,調(diào)用m_slinder中的CustomdrawSlider()函數(shù)來定義音量的改變。</p><p><b>  2、創(chuàng)建工程:</b></p><p>  打開VC++6.0,點(diǎn)擊“新建”,在“新建”窗口選擇“工程”選項(xiàng)卡。由于程序是基于對話框的MFC應(yīng)用程序,所以首先是建立基于對話框的工程,以“l(fā)ee”

11、為工程名,然后點(diǎn)擊“確定”,如圖1所示。</p><p><b>  圖1 新建對話框</b></p><p>  在點(diǎn)擊“確定”后進(jìn)入到了“MFC應(yīng)用程序向?qū)А襟E1”的設(shè)置界面,選擇“基本對話框”,然后點(diǎn)擊“下一步”。</p><p>  圖2 MFC應(yīng)用程序向?qū)?lt;/p><p>  在剩下的3個(gè)步驟中,全部選擇默認(rèn)

12、的設(shè)置,不要做隨意更改,直至“完成”便實(shí)現(xiàn)了對話框的創(chuàng)建。在建立的對話框中,點(diǎn)擊右鍵,選擇“插入ActiveX控件”,在跳出的對話框中選擇“Windows Media Player”,點(diǎn)擊“確定”。</p><p>  圖3 插入Windows Media Player控件</p><p>  雖然已插入該控件,但該控件沒有與工程中的對話框發(fā)生任何聯(lián)系,所以需要對其進(jìn)行變量(variabl

13、es)的關(guān)聯(lián),將該控件與對話框聯(lián)系起來。</p><p>  左鍵單擊對話框中的中的“Windows Media Player”控件,“屬性”設(shè)置為“IDC_player”,右鍵單擊“建立類向?qū)А?,在對話框中選擇“Member Variables”選項(xiàng)卡,單擊“ADD Variables”, 圖5中的“Confirm Classes”中點(diǎn)擊“OK”會(huì)彈出下圖6所示的“Add member name”對話框,命名為

14、“m_player”,設(shè)為控制“Control”型,單機(jī)“OK”。</p><p>  圖4 MFC ClassWizard</p><p>  圖5 Confirm Classes</p><p><b>  圖6 變量命名</b></p><p>  關(guān)聯(lián)變量之后才算是真正的添加了該控件,可以發(fā)現(xiàn)在關(guān)聯(lián)變量之后

15、,控件工具欄多了“Windows Media Player”控件的選項(xiàng),并且在“Source Files”中增加了許多類,相應(yīng)的頭文件也增加許多,其中最主要的類為Cwmpplayer4,Cwmpcontrols,Cwmpmedia, Cwmpsettings四大類。Cwmpplayer4類主要是關(guān)于對其他類的對象的調(diào)用以及基本的控件功能的實(shí)現(xiàn),提供了與Windows Media Player控件進(jìn)行交互的基本方法,其中部分成員函數(shù)還能夠

16、進(jìn)一步獲取得到其他相關(guān)類對象的實(shí)例;Cwmpcontrols類主要是對控件的更多的操作;Cwmpmedia類主要是對于媒體文件資源的一些操作;Cwmpsettings類主要是對于媒體文件中的一些基本設(shè)置的操作。 </p><p><b>  3、界面的設(shè)計(jì):</b></p><p>  首先是打開按鈕,用于媒體文件的打開;然后依次是播放、暫停、全屏、快進(jìn)、快退、靜音、

17、停止、退出按鈕,以及音量滑塊條Slinder控件。對空間主要進(jìn)行變量的關(guān)聯(lián),以及ID的修改,對于普通按鈕進(jìn)行ID修改,結(jié)果如下下表1和表2所示。 表1 控件ID以及關(guān)聯(lián)變量表</p><p>  表2 控件ID以及對應(yīng)響應(yīng)函數(shù)表</p><p>  經(jīng)過控件添加、關(guān)聯(lián)和位置修改、ID修改,最終得到各個(gè)控件分布后的界面。另外還要加入菜單“MENU”,菜單的添加

18、相對較簡單。 </p><p>  在“Resource File”中添加“MENU”,屬性為“IDR_MENU1”,在“MENU”將按鈕的ID填入到相應(yīng)的“MENU”選項(xiàng)中,但是菜單并未與對話窗口有實(shí)質(zhì)性聯(lián)系,需要將菜單加入到“IDD_CWMJ_DIALG”中來,在“IDD_CWMJ_DIALG”窗口空白右鍵單擊,選中菜單“IDR_MENU1”,這樣便完成了對菜單的加載。運(yùn)行界面效果圖如下圖所示。</p&

19、gt;<p>  圖7 運(yùn)行后的界面效果</p><p>  4、關(guān)鍵功能的實(shí)現(xiàn):</p><p>  4.1 “打開”功能的實(shí)現(xiàn):</p><p>  void CleeDlg::Onopen() </p><p><b>  {</b></p><p>  // TODO: A

20、dd your command handler code here</p><p>  char szFilter[]="ALL Data(*.*)|*.*|AVI File (*.avi)|*.avi|Video File (*.dat)|*.dat|Wav File (*.wav)|*.wav|Mid File(*.mid;*.rmi)|*.mid;*.rmi|MPEG File (*.mpeg)|

21、*.mpeg";</p><p>  //用于設(shè)置FileDialog的文件類型 </p><p>  CFileDialog FileDlg( TRUE, NULL, NULL, OFN_HIDEREADONLY, szFilter ); </p><p>  if( FileDlg.DoModal() == IDOK ) </p><

22、;p><b>  { </b></p><p>  CString PathName = FileDlg.GetPathName(); </p><p>  PathName.MakeUpper(); </p><p>  m_ActiveMovie.SetFileName(PathName); </p><p>

23、  CMenu* pMenu=GetMenu ();</p><p>  ASSERT_VALID (pMenu);</p><p>  pMenu->EnableMenuItem(fullscreen,0); </p><p>  pMenu->EnableMenuItem(end,0); </p><p>  pMenu-&g

24、t;EnableMenuItem(pause,0); </p><p>  pMenu->EnableMenuItem(run,0);</p><p><b>  } </b></p><p><b>  } </b></p><p>  4.2 “播放”功能的實(shí)現(xiàn) </p>

25、<p>  void CleeDlg::Onrun() </p><p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><p><b>  //播放</b></p><p>  m_ActiveM

26、ovie.Run();</p><p><b>  }</b></p><p>  4.3 “暫?!惫δ艿膶?shí)現(xiàn)</p><p>  void CleeDlg::Onpause() </p><p><b>  {</b></p><p>  // TODO: Add your

27、 command handler code here</p><p><b>  //暫停</b></p><p>  m_ActiveMovie.Pause();</p><p><b>  }</b></p><p>  4.4 “結(jié)束”功能的實(shí)現(xiàn)</p><p>  v

28、oid CleeDlg::Onend() </p><p><b>  {</b></p><p><b>  //結(jié)束菜單</b></p><p>  // TODO: Add your command handler code here</p><p>  m_ActiveMovie.Stop(

29、);</p><p><b>  }</b></p><p><b>  “全屏”功能的實(shí)現(xiàn)</b></p><p>  void CleeDlg::Onfullscreen() </p><p><b>  {</b></p><p>  // TOD

30、O: Add your command handler code here</p><p><b>  //全屏</b></p><p>  if(m_ActiveMovie.GetCurrentState()>-1)</p><p><b>  {</b></p><p>  m_Activ

31、eMovie.Pause ();//暫停播放 </p><p>  m_ActiveMovie.SetFullScreenMode(true);//設(shè)置滿屏模式 </p><p>  m_ActiveMovie.Run();//繼續(xù)播放 </p><p><b>  }</b></p><p><b>  }

32、</b></p><p>  4.6 “控件隱藏”功能的實(shí)現(xiàn)</p><p>  void CleeDlg::Onhide() </p><p><b>  {</b></p><p><b>  //設(shè)置按鍵的隱藏</b></p><p><b>  

33、CRect rc;</b></p><p>  GetWindowRect(rc);</p><p>  if(rc.bottom>500)</p><p>  //判斷窗口是否過小</p><p>  m_hide=m_hide==0?1:0;</p><p>  if(m_hide==0)<

34、/p><p>  GetMenu()->CheckMenuItem(hide,MF_UNCHECKED);</p><p><b>  else</b></p><p>  GetMenu()->CheckMenuItem(hide,MF_CHECKED);</p><p>  MovieWindow();<

35、;/p><p><b>  }</b></p><p>  “滑塊控制音量”的實(shí)現(xiàn)</p><p>  void CleeDlg::OnCustomdrawSlider(NMHDR* pNMHDR, LRESULT* pResult) </p><p><b>  {</b></p>&l

36、t;p>  // TODO: Add your control notification handler code here</p><p><b>  //滑塊控制聲音</b></p><p>  UpdateData(TRUE);</p><p>  sound=m_slider.GetPos();</p><p&

37、gt;  UpdateData(FALSE);</p><p>  *pResult = 0;</p><p>  CMenu* pMenu=GetMenu ();</p><p>  ASSERT_VALID (pMenu);</p><p>  pMenu->EnableMenuItem(reduce,0);</p>

38、<p>  pMenu->EnableMenuItem(add,0);</p><p>  if(sound<100&&sound>-100)</p><p><b>  {</b></p><p>  m_sound=-sound*20-2000;</p><p>  if(

39、m_ActiveMovie.GetCurrentState()>-1&&sound_flag==1)</p><p>  m_ActiveMovie.SetVolume(-sound*20-2000);</p><p><b>  }</b></p><p><b>  else</b></p&

40、gt;<p>  if (sound<0)</p><p>  pMenu->EnableMenuItem(add,1);</p><p><b>  else</b></p><p>  pMenu->EnableMenuItem(reduce,1);</p><p><b>

41、  }</b></p><p>  4.8 “音量增大”的功能實(shí)現(xiàn)</p><p>  void CleeDlg::Onadd() </p><p><b>  { </b></p><p><b>  //用于增加音量 </b></p><p>  CMenu*

42、 pMenu=GetMenu ();</p><p>  ASSERT_VALID (pMenu);</p><p>  pMenu->EnableMenuItem(reduce,0);</p><p><b>  //講減小置為可用</b></p><p>  if(sound>-100)</p>

43、;<p><b>  {</b></p><p>  pMenu->EnableMenuItem(add,0);</p><p>  m_slider.SetPos(sound-10);</p><p><b>  //更改滑塊位置</b></p><p>  if(m_Acti

44、veMovie.GetCurrentState()>-1)</p><p>  //判斷是否已載入媒體</p><p>  m_ActiveMovie.SetVolume(-sound*20-2000);</p><p><b>  }</b></p><p><b>  else </b>&

45、lt;/p><p>  pMenu->EnableMenuItem(add,1);</p><p>  //聲音大于0 禁用增大</p><p><b>  }</b></p><p>  4.9 “音量減小”的功能實(shí)現(xiàn)</p><p>  void CleeDlg::Onreduce() &l

46、t;/p><p><b>  {</b></p><p><b>  //用于減小音量 </b></p><p>  CMenu* pMenu=GetMenu ();</p><p>  ASSERT_VALID (pMenu);</p><p>  pMenu->Enab

47、leMenuItem(add,0);</p><p><b>  //講增加置為可用</b></p><p>  // TODO: Add your command handler code here</p><p>  if(sound<100)</p><p><b>  {</b><

48、;/p><p>  pMenu->EnableMenuItem(reduce,0);</p><p>  m_slider.SetPos(sound+10);</p><p><b>  //更改滑塊位置</b></p><p>  if(m_ActiveMovie.GetCurrentState()>-1)&

49、lt;/p><p>  //判斷是否已載入媒體</p><p>  m_ActiveMovie.SetVolume(-sound*20-2000); </p><p><b>  }</b></p><p><b>  else</b></p><p>  pMenu->E

50、nableMenuItem(reduce,1);</p><p>  //聲音小于-4000 禁用減小</p><p><b>  }</b></p><p>  4.10 “靜音”功能的實(shí)現(xiàn)</p><p>  void CleeDlg::Onnosound() </p><p><b&g

51、t;  {</b></p><p>  // TODO: Add your command handler code here</p><p>  m_nosound.SetCheck(sound_flag); </p><p>  //設(shè)置靜音復(fù)選框的復(fù)選</p><p>  GetMenu()->CheckMenuIte

52、m(nosound,MF_UNCHECKED);</p><p>  //設(shè)置靜音菜單的復(fù)選</p><p>  if(sound_flag==1)</p><p><b>  {</b></p><p>  m_sound=m_ActiveMovie.GetVolume ();</p><p>

53、  GetMenu()->CheckMenuItem(nosound,MF_CHECKED);</p><p>  sound_flag=0;</p><p>  if(m_ActiveMovie.GetCurrentState()>-1)</p><p>  m_ActiveMovie.SetVolume(-8000);</p><

54、p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  sound_flag=1;</p><p>  GetMenu()->CheckMenuItem(nosound,MF_UNCHE

55、CKED);</p><p>  if(m_ActiveMovie.GetCurrentState()>-1)</p><p>  m_ActiveMovie.SetVolume(m_sound);</p><p><b>  }</b></p><p><b>  //靜音標(biāo)志的更改</b>

56、</p><p><b>  }</b></p><p>  4.11 “聲道平衡”功能的實(shí)現(xiàn)</p><p>  void CleeDlg::Onbalance() </p><p>  { // TODO: Add your command handler code here</p><p&g

57、t;<b>  //聲道平衡</b></p><p>  Cbalance sound_balance;</p><p>  m_movie=(CActiveMovie3*)&m_ActiveMovie;</p><p>  //使用CActiveMovie3控件指針傳遞</p><p>  sound_bala

58、nce.DoModal();</p><p><b>  }</b></p><p>  4.12 “退出”功能的實(shí)現(xiàn)</p><p>  void CleeDlg::Onclose() </p><p><b>  {</b></p><p>  // TODO: Add

59、your command handler code here</p><p>  OnOK();//退出應(yīng)用程序 </p><p><b>  }</b></p><p><b>  5、實(shí)驗(yàn)成果</b></p><p><b>  圖8 打開</b></p>

60、<p><b>  圖9 播放中</b></p><p><b>  五、實(shí)習(xí)總結(jié)</b></p><p>  經(jīng)過這次課程設(shè)計(jì),讓我對于MFC編程的方法有了進(jìn)一步的認(rèn)識(shí)。開始看到VC++選擇了一個(gè)感興趣的的題目——視頻播放器,以為用VC++做出一個(gè)視頻播放器的靜態(tài)界面,結(jié)果說要做出一個(gè)播放器并且還要具有播放視頻的真實(shí)效果,其他的功能

61、也都要實(shí)現(xiàn),就覺得這個(gè)課設(shè)很難,因?yàn)閂C++學(xué)的不扎實(shí)。 </p><p>  接觸題目開始做后,選用相對簡單的Windows Media Player控件,于是在網(wǎng)上查了一些關(guān)于Windows Media Player控件的,結(jié)果按照網(wǎng)上說的方法來根本無法實(shí)現(xiàn),所以在頭兩天是在摸索中,耗費(fèi)了很多時(shí)間才拾起當(dāng)時(shí)學(xué)的一些基本知識(shí)。整個(gè)程序設(shè)計(jì)我做了十天,直到答辯前一天我都還在編寫代碼,每天熬夜到12點(diǎn),想起當(dāng)時(shí)沒有

62、好好學(xué)習(xí)VC++的課程知識(shí),現(xiàn)在做起來才知道多么的浪費(fèi)時(shí)間,很多小知識(shí)點(diǎn)卻耗費(fèi)了大量的時(shí)間去糾結(jié)。 </p><p>  在此次的實(shí)習(xí)中,我發(fā)現(xiàn)控件自帶的的類會(huì)在對話框的主程序中被調(diào)用,那么就要在主程序中#include入對應(yīng)類的頭文件。對需要用到的類生成對應(yīng)的對象以實(shí)現(xiàn)類中函數(shù)的使用。在完成控件自帶類的函數(shù)在程序中的使用之后,還需要調(diào)用對話框自身的函數(shù),比如消息及消息響應(yīng)函數(shù)等函數(shù),以及各控件對應(yīng)的消息響應(yīng)函數(shù)

63、,并且初始化函數(shù)等也需要做一些改動(dòng),添加一些與控件類有關(guān)的函數(shù)或者定義一些變量,如此便可以實(shí)現(xiàn)控件自帶類和本程序中的類的共同作用。除此以外,我個(gè)人覺得VC++有個(gè)缺點(diǎn),就是每次建立類向?qū)Ш?,一旦刪除類向?qū)Ш罂偸沁€要手動(dòng)刪除該類向?qū)Тa,還要?jiǎng)h除頭文件里的變量,不然總是提示錯(cuò)誤,很繁瑣,很費(fèi)事。 </p><p>  最后,歷時(shí)兩周的實(shí)習(xí)終于結(jié)束了,播放器也做好了,并且能夠?qū)崿F(xiàn)一個(gè)視頻播放器最基本的一些功能,每次運(yùn)

64、行看到我的播放器能夠按照我的指令去實(shí)現(xiàn)一些功能真的很欣慰。這次是一個(gè)很好的機(jī)會(huì),讓我再次拾起了忘記了的知識(shí),也鍛煉了我的實(shí)踐能力,提高了自己獨(dú)立解決問題的水平。同時(shí)也非常感謝馬岱、于永彥兩位老師的指導(dǎo),以及計(jì)算機(jī)工程學(xué)院給我們提供實(shí)驗(yàn)環(huán)境。</p><p><b>  參 考 文 獻(xiàn)</b></p><p>  [1]揣錦華.面向?qū)ο蟪绦蛟O(shè)計(jì)與VC++實(shí)踐[M].西安

65、電子科技大學(xué)出版社.2005 </p><p>  [2]鄭阿奇.Visual C++教程[M].北京:機(jī)械工業(yè)出版社.2004 </p><p>  [4]周長發(fā).Visual C++.NET多媒體編程[M].電子工業(yè)出版社.2002 </p><p>  [5]Steve Mack.流媒體寶典.電子工業(yè)出版社.2003 </p><p>

66、  [6]王育堅(jiān).Visual C++面向?qū)ο缶幊探坛?第2版.北京:清華大學(xué)出版社,2008 </p><p>  [7]侯俊杰 .深入淺出MFC.第2版.廣東:南方出版社,2007 </p><p>  [8]嚴(yán)華峰等.Visual C++課程設(shè)計(jì)案例精編.北京:中國水利水電出版社,2004 </p><p>  [9]王維玉等.Visual C++高級(jí)編程技術(shù)

溫馨提示

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

評論

0/150

提交評論