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

下載本文檔

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

文檔簡(jiǎn)介

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

2、t;<p>  軟件設(shè)計(jì)模塊………………………………………6</p><p>  3.1文件的打開(kāi)模塊……………………………………….6</p><p>  3.2文件的播放模塊……………………………………… 9</p><p>  3.3文件的停止模塊……………………………………….9</p><p>  3.4全屏模塊………

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

4、;/p><p>  3.9文件暫停模塊…………………………………………12</p><p>  4.運(yùn)行結(jié)果……………………………………………….13</p><p>  5.設(shè)計(jì)過(guò)程中遇到的問(wèn)題和感想…………………15</p><p>  6.參考文獻(xiàn)…………………………………………16</p><p><b>

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

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

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

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

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

10、e,通過(guò)選擇不同的按鈕來(lái)給m_MediaType賦不同的值,不同的值代表不同的文件格式。</p><p><b>  打開(kāi)文件代碼:</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快進(jìn)、快退模塊</p><p>  void CWavePlayDlg::Onfast() 快進(jìn)</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>  定義一個(gè)int型的全局變量m_change,選擇不同的按鈕會(huì)給m_change賦不同的值,在onpaint函數(shù)中根據(jù)m_change不同的值來(lái)設(shè)置不同的背景。</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)//實(shí)現(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音量調(diào)節(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>  四、運(yùn)行結(jié)果</b></p><p><b>  播放.MP3文件</b></p><p><b>  播放.avi文件</b></p><

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

77、不少問(wèn)題,在實(shí)現(xiàn)暫停功能時(shí)報(bào)錯(cuò),后來(lái)查看相關(guān)資料才發(fā)現(xiàn)沒(méi)有加上#include"wmpcontrols.h"、#include"wmpsettings.h"頭文件。在給對(duì)話框添加背景后發(fā)現(xiàn)文本框沒(méi)有透明化,通過(guò)百度查找相關(guān)資料才知道要加上一段代碼,同時(shí)還可以給文本框里的文字改變顏色。</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);//設(shè)置背景透明</p><p>  pDC->SetTextColor(RGB(0,0,0));//設(shè)置字體顏色</p>

80、<p>  return (HBRUSH)::GetStockObject(NULL_BRUSH);</p><p><b>  }</b></p><p>  // TODO: 如果默認(rèn)的不是所需畫(huà)筆,則返回另一個(gè)畫(huà)筆</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>  在引入位圖時(shí),因?yàn)椴恢乐荒芤?bmp類型的圖片一直出現(xiàn)錯(cuò)誤,后來(lái)請(qǐng)教同學(xué)才知道了圖片應(yīng)為.bmp類型并且256位以下。</p&g

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

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論