第12章_多媒体应用程序的设计.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:46 大小:201KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第12章_多媒体应用程序的设计.ppt

第12章_多媒体应用程序的设计.ppt

预览

免费试读已结束,剩余 36 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第12章多媒体应用程序的设计12.1利用音频函数实现多媒体程序设计12.1.1一个简单的应用实例PlaySound()12.1.3用MCI控制波形声音的播放在调用MCI设备时可用mciGetErrorString()检测错误,该函数的原型如下:BOOLmciGetErrorString(DWORDfdwError,//错误代码LPTSTRlpszErrorText,//指向错误内容字串的指针UINTcchErrorText//错误内容的缓冲区容量)【例12-2】编写一个音频播放器程序,可以选择音频文件,并控制其播放、暂停播放、暂停后的继续播放以及停止播放的功能1.将头文件mmsystem.h加入到文件Stdafx.h中,将多媒体函数库winmm.lib通过project菜单中的seetings命令来与程序链接起来BOOLCMCIPlayerDlg::OnInitDialog(){CDialog::OnInitDialog();…//TODO:Addextrainitializationherem_PSign=FALSE;//初始化正在播放标识m_ASign=FALSE;//初始化正在暂停标识m_MCIDeviceID=0;//初始化设备标识returnTRUE;}voidCMCIPlayerDlg::OnOpenButton()//打开一个文件{CStringfilename;//定义CString类的filename用来存储文件名CStringfileext;//定义CString类的fileext用来存储文件扩展名MCI_OPEN_PARMSmciOpenParms;//定义结构体变量用来存储打开文件的信息和返回的设备标识信息DWORDdwError;//定义dwError用来储存返回的错误标识staticcharszFilter[]="波形音频文件(*.wav)|*.wav|MIDI序列(*.mid)|*.mid\0";CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);//通过打开按钮时显示的内容if(dlg.DoModal()==IDOK){filename=dlg.GetFileName();//获取打开的文件名fileext=dlg.GetFileExt();//获取打开的文件扩展名if(m_PSign)//如果程序正在播放,则关闭{dwError=mciSendCommand(m_MCIDeviceID,MCI_CLOSE,0,NULL);//关闭正在播放的声音if(dwError)//如果关闭不成功,则显示出错的原因{if(mciGetErrorString(dwError,(LPSTR)szErrorBuf,MAXERRORLENGTH))MessageBox(szErrorBuf,"MCI出错",MB_ICONWARNING);elseMessageBox("不明错误标识","MCI出错",MB_ICONWARNING);//给出相应报告return;}}//如果没有声音正在播放,则获取打开文件的后辍,并根据后辍决定相应的打开类型if(!strcmp("wav",fileext))//当后辍为wav时mciOpenParms.lpstrDeviceType="waveaudio";elseif(!strcmp("mid",fileext))//当后辍为mid时mciOpenParms.lpstrDeviceType="sequencer";mciOpenParms.lpstrElementName=filename;//将打开的文件名存入mciOpenParms结构体中dwError=mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpenParms);//发送打开文件命令,MCI_OPEN_TYPE参数说明设备类型名包含在mciOpenParms结构体中,//MCI_OPEN_ELEMENT参数说明要打开的文件名包含在mciOpenParams结构体中if(dwError)//如果打开不成功,则显示出错的原因{if(mciGetErrorString(dwError,(LPSTR)szErrorBuf,MAXERRORLENGTH))MessageBox(szErrorBuf,"MCI出错",MB