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

下載本文檔

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

文檔簡介

1、<p><b>  課 程 設 計</b></p><p>  2013——2014學年 第2學期</p><p><b>  目錄</b></p><p>  設計題目及要求……………………………………3</p><p>  基本功能描述………………………………………4</p&g

2、t;<p>  軟件設計模塊………………………………………6</p><p>  3.1文件的打開模塊……………………………………….6</p><p>  3.2文件的播放模塊……………………………………… 9</p><p>  3.3文件的停止模塊……………………………………….9</p><p>  3.4全屏模塊………

3、……………………………………….9</p><p>  3.5快進、快退模塊……………………………………….9</p><p>  3.6換皮膚模塊……………………………………………10</p><p>  3.7音量調節(jié)模塊…………………………………………12</p><p>  3.8窗口隱藏模塊…………………………………………12<

4、;/p><p>  3.9文件暫停模塊…………………………………………12</p><p>  4.運行結果……………………………………………….13</p><p>  5.設計過程中遇到的問題和感想…………………15</p><p>  6.參考文獻…………………………………………16</p><p><b>

5、;  一、設計題目及要求</b></p><p><b>  1.1設計題目</b></p><p>  基于MFC的多媒體播放器系統(tǒng)</p><p><b>  1.2題目要求</b></p><p>  1.制作一個具有自己設計風格的媒體播放器。</p><p&g

6、t;  2.要求能隨機選取要播放的文件,實現(xiàn)前進,回退,暫停,循環(huán)播放,音量大小調節(jié)等基本功能。</p><p>  3.要求能播放多種格式(至少四種或四種以上)的音頻視頻格式文件。 </p><p>  4.可以實現(xiàn)其它附加功能(不在要求范圍之內(nèi))</p><p>  5.界面良好,功能完善</p><p><b>  二、基本功

7、能描述</b></p><p>  本次課程設計制作的多媒體播放器是利用Windows系統(tǒng)自帶的Windows Media Player控件,可以分別通過按鈕和菜單實現(xiàn)*.mp3、*.mid、*.avi、*wav等媒體文件的打開、播放、暫停、全屏、音量調節(jié)、快進、快退、關閉、循環(huán)播放等功能。還通過更換位圖的方式,實現(xiàn)了換皮膚功能。</p><p>  打開文件:通過選擇文件類型

8、打開不同類型的文件,如果打開的格式不對,消息框會提醒打開正確的格式的文件。再打開文件前,其他按鍵不能進行操作。</p><p>  播放文件:開始播放文件。</p><p>  停止播放:停止播放文件。</p><p>  全屏:將播放器變?yōu)槿痢?lt;/p><p>  快退、快進:實現(xiàn)快退、快進功能。</p><p>

9、  換皮膚:選擇沙漠、可愛棒冰、燈塔、郁金香可以為播放器換不同的背景。</p><p>  音量調節(jié):可以實現(xiàn)調大,調小音量的功能。</p><p><b>  三、軟件設計模塊</b></p><p>  3.1文件的打開模式</p><p>  在WavePlayDlg.h中設定一個int型的全局m_MediaTyp

10、e,通過選擇不同的按鈕來給m_MediaType賦不同的值,不同的值代表不同的文件格式。</p><p><b>  打開文件代碼:</b></p><p>  void CWavePlayDlg::OnOpen() </p><p><b>  {</b></p><p>  // TODO: A

11、dd your control notification handler code here</p><p>  CFileDialog OpenDlg(TRUE);</p><p>  switch(this->m_MediaType)</p><p><b>  {</b></p><p><b> 

12、 case 1:</b></p><p><b>  {</b></p><p>  char szFileFilter[]= </p><p>  { "Mp3 File(*.mp3)|*.mp3|"</p><p>  "MPEG File(*.mpeg)|*.mpeg|&q

13、uot;</p><p>  "Media File(*.asf)|*.asf|"</p><p>  "Video File(*.dat)|*.dat|"</p><p>  "MPGA File(*.mpga)|*.mpga|"</p><p>  "Wave File

14、(*.wav)|*.wav|"</p><p>  "AVI File(*.avi)|*.avi|"</p><p>  "Movie File(*.mov)|*.mov|"</p><p>  "Mid File(*.mid;*,rmi)|*.mid;*.rmi|"</p><

15、;p>  "Wma File(*.wma)|*.wma|"</p><p>  "All File(*.*)|*.*||"</p><p><b>  };</b></p><p>  CFileDialog fileDialog ( TRUE,_T("wav"),NULL,NU

16、LL,_T("wav音頻文件(*.wav)|*.wav||")); //選擇wav模式</p><p>  if (fileDialog.DoModal() == IDOK)</p><p><b>  {</b></p><p>  m_filename=fileDialog.GetPathName();</p>

17、;<p><b>  }</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  case 2:</b></p><p><b>  {</b><

18、;/p><p>  char szFileFilter[]= </p><p>  { "Mp3 File(*.mp3)|*.mp3|"</p><p>  "MPEG File(*.mpeg)|*.mpeg|"</p><p>  "Media File(*.asf)|*.asf|"&

19、lt;/p><p>  "Video File(*.dat)|*.dat|"</p><p>  "MPGA File(*.mpga)|*.mpga|"</p><p>  "Wave File(*.wav)|*.wav|"</p><p>  "AVI File(*.avi)

20、|*.avi|"</p><p>  "Movie File(*.mov)|*.mov|"</p><p>  "Mid File(*.mid;*,rmi)|*.mid;*.rmi|"</p><p>  "Wma File(*.wma)|*.wma|"</p><p> 

21、 "All File(*.*)|*.*||"</p><p><b>  };</b></p><p>  CFileDialog fileDialog ( TRUE,_T("avi"),NULL,NULL,_T("avi音頻文件(*.avi)|*.avi||")); //選擇avi模式</p>

22、<p>  if (fileDialog.DoModal() == IDOK)</p><p><b>  {</b></p><p>  m_filename=fileDialog.GetPathName();</p><p><b>  }</b></p><p><b>

23、;  break;</b></p><p><b>  }</b></p><p><b>  case 3:</b></p><p><b>  {</b></p><p>  char szFileFilter[]= </p><p> 

24、 { "Mp3 File(*.mp3)|*.mp3|"</p><p>  "MPEG File(*.mpeg)|*.mpeg|"</p><p>  "Media File(*.asf)|*.asf|"</p><p>  "Video File(*.dat)|*.dat|"</

25、p><p>  "MPGA File(*.mpga)|*.mpga|"</p><p>  "Wave File(*.wav)|*.wav|"</p><p>  "AVI File(*.avi)|*.avi|"</p><p>  "Movie File(*.mov)|*.m

26、ov|"</p><p>  "Mid File(*.mid;*,rmi)|*.mid;*.rmi|"</p><p>  "Wma File(*.wma)|*.wma|"</p><p>  "All File(*.*)|*.*||"</p><p><b> 

27、 };</b></p><p>  CFileDialog fileDialog ( TRUE,_T("mid"),NULL,NULL,_T("avi音頻文件(*.mid)|*.mid||")); //選擇mid模式</p><p>  if (fileDialog.DoModal() == IDOK)</p><p&

28、gt;<b>  {</b></p><p>  m_filename=fileDialog.GetPathName();</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  }</b>&l

29、t;/p><p><b>  case 4:</b></p><p><b>  {</b></p><p>  char szFileFilter[]= </p><p>  { "Mp3 File(*.mp3)|*.mp3|"</p><p>  &quo

30、t;MPEG File(*.mpeg)|*.mpeg|"</p><p>  "Media File(*.asf)|*.asf|"</p><p>  "Video File(*.dat)|*.dat|"</p><p>  "MPGA File(*.mpga)|*.mpga|"</p>

31、;<p>  "Wave File(*.wav)|*.wav|"</p><p>  "AVI File(*.avi)|*.avi|"</p><p>  "Movie File(*.mov)|*.mov|"</p><p>  "Mid File(*.mid;*,rmi)|*.mi

32、d;*.rmi|"</p><p>  "Wma File(*.wma)|*.wma|"</p><p>  "All File(*.*)|*.*||"</p><p><b>  };</b></p><p>  CFileDialog fileDialog ( TRU

33、E,_T("mp3"),NULL,NULL,_T("mp3音頻文件(*.mp3)|*.mp3||")); //選擇MP3模式</p><p>  if (fileDialog.DoModal() == IDOK)</p><p><b>  {</b></p><p>  m_filename=fileD

34、ialog.GetPathName();</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p> 

35、 this->m_FileName.SetWindowText(m_filename);</p><p>  this->m_CloseButton.EnableWindow(true);</p><p>  this->m_playbotton.EnableWindow(true);</p><p><b>  }</b>

36、;</p><p>  void CWavePlayDlg::OnRadio1() //選擇不同類型的文件</p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p>

37、<p>  m_MediaType=1;</p><p><b>  }</b></p><p>  void CWavePlayDlg::OnRadio2() </p><p><b>  {</b></p><p>  // TODO: Add your control noti

38、fication handler code here</p><p>  m_MediaType=2;</p><p><b>  }</b></p><p>  void CWavePlayDlg::OnRadio3() </p><p><b>  {</b></p><p&

39、gt;  // TODO: Add your control notification handler code here</p><p>  m_MediaType=3;</p><p><b>  }</b></p><p>  void CWavePlayDlg::OnRadio4() </p><p><b

40、>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  m_MediaType=4;</p><p><b>  }</b></p><p>  3.2文件的播放模塊</p>

41、<p>  在.WavePlayDlg.h中添加#include"wmpcontrols.h"、#include"wmpsettings.h"</p><p><b>  文件播放代碼:</b></p><p>  void CWavePlayDlg::OnPlay() </p><p>&l

42、t;b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  m_play.SetUrl(m_filename);</p><p>  this->m_full.EnableWindow(true);</p>&l

43、t;p>  this->m_decvolum.EnableWindow(true);</p><p>  this->m_addvolum.EnableWindow(true);</p><p>  this->m_fast.EnableWindow(true);</p><p>  this->m_slow.EnableWindow

44、(true);</p><p><b>  }</b></p><p>  3.3文件的停止模塊</p><p>  void CWavePlayDlg::OnClose() </p><p><b>  {</b></p><p>  // TODO: Add your c

45、ontrol notification handler code here</p><p>  m_play.close();</p><p><b>  }</b></p><p><b>  3.4全屏模塊</b></p><p>  void CWavePlayDlg::Onfullscree

46、n() </p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  m_play.SetFullScreen(1);</p><p><b>  }</b><

47、/p><p>  3.5快進、快退模塊</p><p>  void CWavePlayDlg::Onfast() 快進</p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code

48、here</p><p>  m_play.GetControls().fastForward();</p><p><b>  }</b></p><p>  void CWavePlayDlg::Onslow() 快退</p><p><b>  {&l

49、t;/b></p><p>  // TODO: Add your control notification handler code here</p><p>  m_play.GetControls().fastReverse();</p><p><b>  }</b></p><p><b>  

50、3.6換皮膚模塊</b></p><p>  定義一個int型的全局變量m_change,選擇不同的按鈕會給m_change賦不同的值,在onpaint函數(shù)中根據(jù)m_change不同的值來設置不同的背景。</p><p><b>  換皮膚代碼:</b></p><p>  void CWavePlayDlg::Onshamo()

51、</p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  m_change=1;</p><p>  Invalidate();</p><p><b&

52、gt;  }</b></p><p>  void CWavePlayDlg::Oncaodi() </p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  m_chang

53、e=2;</p><p>  Invalidate();</p><p><b>  }</b></p><p>  void CWavePlayDlg::Ondengta() </p><p><b>  {</b></p><p>  // TODO: Add your

54、 control notification handler code here</p><p>  m_change=3;</p><p>  Invalidate();</p><p><b>  }</b></p><p>  void CWavePlayDlg::Onyujinx() </p>&l

55、t;p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  m_change=4;</p><p>  Invalidate();</p><p><b>  }</b>

56、;</p><p>  void CWavePlayDlg::OnPaint() </p><p><b>  {</b></p><p>  if(this->m_change==1)//實現(xiàn)換皮膚功能</p><p><b>  {</b></p><p>  CP

57、aintDC dc(this);</p><p>  CBitmap bitmap;</p><p>  bitmap.LoadBitmap(IDB_BITMAP2);</p><p>  CBrush brush;</p><p>  brush.CreatePatternBrush(&bitmap);</p>&l

58、t;p>  CBrush* pOldBrush=dc.SelectObject(&brush);</p><p>  dc.Rectangle(0,0,800,800);</p><p>  dc.SelectObject(pOldBrush);</p><p><b>  }</b></p><p>  

59、else if(this->m_change==2)</p><p><b>  {</b></p><p>  CPaintDC dc(this);</p><p>  CBitmap bitmap;</p><p>  bitmap.LoadBitmap(IDB_BITMAP5);</p><

60、;p>  CBrush brush;</p><p>  brush.CreatePatternBrush(&bitmap);</p><p>  CBrush* pOldBrush=dc.SelectObject(&brush);</p><p>  dc.Rectangle(0,0,800,800);</p><p>

61、;  dc.SelectObject(pOldBrush);</p><p><b>  }</b></p><p>  else if(this->m_change==3)</p><p><b>  {</b></p><p>  CPaintDC dc(this);</p>

62、<p>  CBitmap bitmap;</p><p>  bitmap.LoadBitmap(IDB_BITMAP4);</p><p>  CBrush brush;</p><p>  brush.CreatePatternBrush(&bitmap);</p><p>  CBrush* pOldBrush=d

63、c.SelectObject(&brush);</p><p>  dc.Rectangle(0,0,800,800);</p><p>  dc.SelectObject(pOldBrush);</p><p><b>  }</b></p><p>  else if(this->m_change==4

64、)</p><p><b>  {</b></p><p>  CPaintDC dc(this);</p><p>  CBitmap bitmap;</p><p>  bitmap.LoadBitmap(IDB_BITMAP6);</p><p>  CBrush brush;</p&

65、gt;<p>  brush.CreatePatternBrush(&bitmap);</p><p>  CBrush* pOldBrush=dc.SelectObject(&brush);</p><p>  dc.Rectangle(0,0,800,800);</p><p>  dc.SelectObject(pOldBrush

66、);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  CPaintDC dc(this);</p><p>  CBitmap bitmap;</p&

67、gt;<p>  bitmap.LoadBitmap(IDB_BITMAP9);</p><p>  CBrush brush;</p><p>  brush.CreatePatternBrush(&bitmap);</p><p>  CBrush* pOldBrush=dc.SelectObject(&brush);</p&

68、gt;<p>  dc.Rectangle(0,0,800,800);</p><p>  dc.SelectObject(pOldBrush);</p><p><b>  }</b></p><p><b>  ……</b></p><p><b>  }</b&g

69、t;</p><p><b>  3.7音量調節(jié)模塊</b></p><p>  void CWavePlayDlg::Ondecvolum() //減小音量</p><p><b>  {</b></p><p>  // TODO: Add

70、your control notification handler code here</p><p>  m_play.GetSettings().SetVolume(m_play.GetSettings().GetVolume()-10); </p><p><b>  }</b></p><p>  void CWavePlayDlg::

71、OnAddvolum() //增大音量</p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  m_play.GetSettings().SetVolume

72、(m_play.GetSettings().GetVolume()+10); </p><p><b>  }</b></p><p><b>  3.8窗口隱藏模塊</b></p><p>  void CWavePlayDlg::OnClose2() </p><p><b>  {&

73、lt;/b></p><p>  // TODO: Add your control notification handler code here</p><p>  m_play.CloseWindow();</p><p><b>  }</b></p><p><b>  3.9文件暫停模塊<

74、/b></p><p>  void CWavePlayDlg::OnPause() </p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  m_play.GetControl

75、s().pause();</p><p><b>  }</b></p><p><b>  四、運行結果</b></p><p><b>  播放.MP3文件</b></p><p><b>  播放.avi文件</b></p><

76、p><b>  換皮膚</b></p><p><b>  窗口隱藏</b></p><p>  五、設計過程中遇到的問題</p><p>  最先想基于MMcontrol插件來寫這個程序,發(fā)現(xiàn)這個插件很難實現(xiàn)播放視頻,調節(jié)音量等功能,便改用了windows media player插件來完成。在編寫程序過程中遇到了

77、不少問題,在實現(xiàn)暫停功能時報錯,后來查看相關資料才發(fā)現(xiàn)沒有加上#include"wmpcontrols.h"、#include"wmpsettings.h"頭文件。在給對話框添加背景后發(fā)現(xiàn)文本框沒有透明化,通過百度查找相關資料才知道要加上一段代碼,同時還可以給文本框里的文字改變顏色。</p><p><b>  代碼如下:</b></p>

78、<p>  HBRUSH CWavePlayDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) </p><p><b>  {</b></p><p>  HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);</p><p

79、>  if(nCtlColor == CTLCOLOR_STATIC )</p><p><b>  {</b></p><p>  pDC->SetBkMode(TRANSPARENT);//設置背景透明</p><p>  pDC->SetTextColor(RGB(0,0,0));//設置字體顏色</p>

80、<p>  return (HBRUSH)::GetStockObject(NULL_BRUSH);</p><p><b>  }</b></p><p>  // TODO: 如果默認的不是所需畫筆,則返回另一個畫筆</p><p>  return hbr;</p><p>  // TODO: Ret

81、urn a different brush if the default is not desired</p><p>  return hbr;</p><p><b>  }</b></p><p>  在引入位圖時,因為不知道只能引入.bmp類型的圖片一直出現(xiàn)錯誤,后來請教同學才知道了圖片應為.bmp類型并且256位以下。</p&g

82、t;<p>  在實現(xiàn)換皮膚的功能時也遇到了問題,不知道要通過什么方式來改變使用的位圖,后來想到可以采取和打開不同類型的文件相同的方式來改變選擇使用的位圖,可是又不知道該使用哪種刷新窗口方式來實現(xiàn)這個功能,最后還是通過百度窗口刷新方法確定使用Invalidate()。</p><p>  在完成這個作業(yè)的過程中,讓我對MFC有了更加深刻的了解,通過去圖書館借閱資料及網(wǎng)上查閱資料學到了很多書本以外的東

83、西,也知道了我們學習知識不應該僅僅局限于課本,應該查閱多方面的資料。任何學習都是應該多實踐,只有自己多做才能真的掌握這些知識。</p><p><b>  六、參考文獻</b></p><p>  《Vc++6.0數(shù)據(jù)庫開發(fā)實例》 人民郵電出版社</p><p>  《vc++面向對象與可視化程序設計》 黃維通</p>&l

溫馨提示

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

評論

0/150

提交評論