多媒体与网络编程实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验10多媒体与网络编程【测试题1】编写代码实现制作一个音频文件播放器。只需要实现如图所示的简单界面,点击打开弹出对话框,打开一个.wav的波形音频文件,点击“播放”按钮开始播放,点击“停止”按钮则停止播放,按“关机”按钮则退出应用程序。需求分析:1,项目背景和原因。波形音频是一种电子数字化的声音,是计算机播放音频的一种重要格式,它存储的是声音的波形信息,当播放波形音频时,不管播放文件的设备是何种类型,都会得到相似的声音,波形音频文件通常wav作为文件扩展名。由于采用波形音频存储电子化声音需要大量的存储空间,因此它一般只用于短时间的声音播放。通过设计一个简单的波形音频播放器,了解MFC,了解接口类MCI。2,波形音频播放器的功能播放器有“打开”,“播放”,“停止”,“关机”三个按钮,同时有一个状态栏,用于显示播放器当前处于的状态。“打开”按钮用于打开一个波形音频文件;“播放”用于播放选中的波形音频文件;“停止”用于暂停正在播放的音频文件,再次点击“播放”时会从暂停出继续播放;“关机”用于退出播放器。播放器界面如图所示:3,数据字典类向导ClassWizard静态文本StaticText按钮CommandButton,4,功能列表“打开”-------------------voidCWaverDlg::OnOpen()“播放”-------------------voidCWaverDlg::OnPlay()“停止”-------------------voidCWaverDlg::OnStop()“关机”-------------------voidCWaverDlg::OnExit()5,具体实现步骤,1、首先在VisualC++平台上,选择File-New,新建一个名为WaveAudio.h的头文件。代码如下:#if!defined(WAVE_H_INCLUDED_)#defineWAVE_H_INCLUDED_#includemmsystem.hclassCWave{public:BOOLm_bPlaying;BOOLm_bOpen;WORDm_wDeviceID;public:CWave();virtual~CWave();DWORDOpen(CStringstrFileName);//DWORDClose();DWORDPlay();voidStop();DWORDClose();};#endif2、接下来再新建WaveAudio.cpp文件。代码如下:#includemmsystem.h#includestdafx.h#includeafxwin.h#includeWaveAudio.hCWave::CWave(){m_bPlaying=FALSE;m_bOpen=FALSE;m_wDeviceID=NULL;}CWave::~CWave(){Close();}DWORDCWave::Open(CStringstrFileName){if(m_bOpen)Close();DWORDdwOpenFlag;MCI_OPEN_PARMSmciOpenParam;mciOpenParam.lpstrDeviceType=WaveAudio;mciOpenParam.lpstrElementName=strFileName;dwOpenFlag=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT|MCI_OPEN_TYPE,(DWORD)(LPVOID)&mciOpenParam);if(dwOpenFlag)returndwOpenFlag;m_wDeviceID=mciOpenParam.wDeviceID;m_bOpen=TRUE;dwOpenFlag=0;MCI_SET_PARMSmciSetParam;mciSetParam.dwTimeFormat=MCI_FORMAT_MILLISECONDS;dwOpenFlag=mciSendCommand(m_wDeviceID,MCI_SET,MCI_SET_TIME_FORMAT,(DWORD)(LPVOID)&mciSetParam);if(dwOpenFlag)returndwOpenFlag;return0;}DWORDCWave::Play(){MCI_PLAY_PARMSmciPlayParam;DWORDdwPlayFlag;dwPlayFlag=mciSendCommand(m_wDeviceID,MCI_PLAY,NULL,(DWORD)(LPVOID)&mciPlayParam);if(dwPlayFlag)returndwPlayFlag;else{m_bPlaying=TRUE;return0;}}voidCWave::Stop(){mciSendCommand(m_wDeviceID,MCI_STOP,NULL,NULL);}DWORDCWave::Close(){if(m_wDeviceID){DWORDdwCloseFlag;mciSendCommand(m_wDeviceID,MCI_STOP,MCI_WAIT,NULL);dwCloseFlag=mciSendCommand(m_wDeviceID,MCI_CLOSE,NULL,NULL);if(dwCloseFlag){AfxMessageBox(关闭时出错);returndwCloseFlag;}}m_bOpen=FALSE;m_bPlaying=FALSE;m_wDeviceID=NULL;return0;}3、新建一个基于对话框类的工程,取名为Waver。在工作区FileView中右键单击Waver,选择“添加到工程”为工程添加WaveAudio.cpp和WaveAudio.h文件。然后在“工程”-“设置”的“连接”中为工程添加winmm.lib。这之后,需要在文件WaverDlg.h的头部添加#include“WaveAudio.h”。最后在CwaverDlg类中添加成员变量:protect:CWavem_Wave;CStringm_strFileName;4、按照要求设计对话框(IDD_WAVER_DIALOG)的界面。要求:“打开”—按钮—IDC_OPEN“播放”—按钮—IDC_PLAY“停止”—按钮—IDC_STOP“关机”—按钮—IDC_EXIT“状态”—静态文本—IDC_STATIC编辑框—IDC_STATUS5、用类向导为对话框添加控件变量IDC_OPENm_btOpenIDC_PLAYm_btnPlayIDC_STATUSm_strStatus6、用类向导为各个函数添加代码voidCWaverDlg::OnPlay(){//TODO:Addyourcontrolnotificationhandlercodehereif(m_Wave.Play())AfxMessageBox(播放出错);m_Wave.m_bPlaying=TRUE;m_strStatus=正在播放……;UpdateData(FALSE);}voidCWaverDlg::OnOpen(){//TODO:AddyourcontrolnotificationhandlercodehereCStringFilter;charbuf[128];DWORDdwFlag;Filter=波形音频文件(*.WAV)|*.WAV||;CFileDialogfileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,Filter);if(fileDlg.DoModal()==IDOK){m_strFileName=fileDlg.GetPathName();dwFlag=m_Wave.Open(m_strFileName);if(dwFlag){mciGetErrorString(dwFlag,buf,strlen(buf));AfxMessageBox(buf);}m_btnPlay.EnableWindow(TRUE);m_strStatus=m_strFileName+文件已经正确打开.;UpdateData(FALSE);}}voidCWaverDlg::OnStop(){//TODO:Addyourcontrolnotificationhandlercodeherem_btnPlay.EnableWindow(TRUE);m_btnOpen.EnableWindow(TRUE);if(m_Wave.m_bPlaying)m_strStatus=播放停止……;UpdateData(FALSE);m_Wave.Stop();}voidCWaverDlg::OnExit(){//TODO:AddyourcontrolnotificationhandlercodehereOnCancel();}6、运行结果【测试题2】BMP位图显示程序,如下图所示,用一个简单的SDI工程实现单击“文件”-“打开”,选择一个.bmp文件,如果不是真正的BMP文件,或者不是真彩色的BMP文件,程序都将报告有关信息。如果用户选择的是真彩色的BMP文件,则程序会在客户区显示整个图像。需求分析:1,项目背景和原因。通过编写图片浏览器进一步加深对VC++编程的理解2,视频播放器的功能界面上有“选择图片”、“改变图片大小”两个按钮。“选择图片”用于打开一个图片文件,文件格式不限;“改变图片大小”用于扩大或缩小图片。3功能列表“打开图片”----------OnFileopen()“改变图片大小”---------OnVideo1x()、OnVideo2x()4,具体实现步骤1、建立工程,,工程名为Image。2、设计界面按钮3、功能列表“打开”voidCCTLY2412Dlg::OnFileopen(){//TODO:AddyourcommandhandlercodeherecharszFileFilter[]=Mp4File(*.mp4)|*.mp4|Mp3File(*.mp3)|*.mp3|WmaFile(*.wma)|*.wma|VideoFile(*.dat)|*.dat|WaveFile(*.wav)|*.wav|AVIFile(*.avi)|*.avi|MovieFile(*.mov)|*.mov|MediaFile(*.mmm)|*.mmm|MidFile(*.mid;*,rmi)|*.mid;*.rmi|MPEGFile(*.mpeg)|*.mpeg|AllFile(*.*)|*.*||;CFileDialogFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);if(FileDlg.DoModal()==IDOK){CStringPathName=FileDlg.GetPathName();PathName.MakeUpper();m_AMovie.SetFileName(PathName);}}放大图片voidCCTLY2412Dlg::OnVideo1x(){//TODO:Addyourcommandhandlercodeherem_AMovie.Pause();m_AMovie.SetMovieWindowSize(1);m_AMovie.Run();}缩小图片voidCCTLY2412Dlg::OnVideo2x(){//TODO:Addyourcommandhandlercodeherem_AMovie.Pause();m_AMovie.SetMovieWindowSize(2);m_AMovie.Run();},5,运行结果【测试题3】编写一个AVI视频播放器程序,能够播放AVI视频文件。“文件”-“打开”菜单项,选择一个AVI文件,则程序在客户区的左上角创建一个MCIWnd窗口,并且窗口中已该AVI文件的首幅画面。按下MCIWnd窗口控制条中的“播放”按钮就开始播放该AVI文

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功