资源描述:
《第11讲 多媒体应用程序的设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第12章多媒体应用程序的设计112.1利用音频函数实现多媒体程序设计为了介绍多媒体程序的设计,我们先介绍一个非常简单的例子,希望读者能够通过这个简单的例子,了解音频文件的播放方法212.1.1一个简单的应用实例【例12-1】设计一个简单的音频播放程序,程序启动时,播放windows系动启动时候的音乐1.创建工程文件MCIStart;打开Stdafx.h文件,在#ifndef_AFX_NO_AFXCMN_SUPPORT语句的上一行顶头加入语句#include2.将winmm.lib与应用程序链接起来
2、3.在MCIStartDlg.cpp的OnInitDialog()函数中的returnTRUE之前加上代码:sndPlaySound("SystemStart",SND_ASYNC);3PlaySound()sndPlaySound()12.1.2几个常用的音频函数MessageBeep()函数:用来播放系统提示音sndPlaySound()函数:播放wav音频PlaySound()函数:播放来自资源中的声音MessageBeep()功能包含关系412.1.3用MCI控制波形声音的播放MCIERRORmciSendCom
3、mand(MCIDEVICEIDIDDevice,//接收命令消息的MCI设备IDUINTuMsg,//发送的命令消息DWORDfdwCommand,//命令消息的标志集DWORD_PTRdwParam)//消息参数的结构体地址常用的MCI设备消息见教材表12-55在调用MCI设备时可用mciGetErrorString()检测错误,该函数的原型如下:BOOLmciGetErrorString(DWORDfdwError,//错误代码LPTSTRlpszErrorText,//指向错误内容字串的指针UINTcchErro
4、rText//错误内容的缓冲区容量)6【例12-2】编写一个音频播放器程序,可以选择音频文件,并控制其播放、暂停播放、暂停后的继续播放以及停止播放的功能IDC_OPEN_BUTTONIDC_CLOSE_BUTTONIDC_START_BUTTONIDC_PAUSE_BUTTONIDC_STOP_BUTTONIDC_EXIT_BUTTON71.将头文件mmsystem.h加入到文件Stdafx.h中,将多媒体函数库winmm.lib通过project菜单中的seetings命令来与程序链接起来2.在CMCIPlayerDl
5、g类上增加Protected类型的成员变量,具体如下:BOOLm_Psign;//作为判断正在播放的标识BOOLm_Asign;//作为判断暂停的标识DWORDdwError;//用来储存错误代码MCIDEVICEIDm_MCIDeviceID;//用来储存打开设备的ID值charszErrorBuf[MAXERRORLENGTH];//用来储存出错内容8BOOLCMCIPlayerDlg::OnInitDialog(){CDialog::OnInitDialog();…//TODO:Addextrainitializa
6、tionherem_PSign=FALSE;//初始化正在播放标识m_ASign=FALSE;//初始化正在暂停标识m_MCIDeviceID=0;//初始化设备标识returnTRUE;}9voidCMCIPlayerDlg::OnOpenButton()//打开一个文件{CStringfilename;//定义CString类的filename用来存储文件名CStringfileext;//定义CString类的fileext用来存储文件扩展名MCI_OPEN_PARMSmciOpenParms;//定义结构体变量用
7、来存储打开文件的信息和返回的设备标识信息DWORDdwError;//定义dwError用来储存返回的错误标识staticcharszFilter[]="波形音频文件(*.wav)
8、*.wav
9、MIDI序列(*.mid)
10、*.mid ";CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY
11、OFN_OVERWRITEPROMPT,szFilter);//通过打开按钮时显示的内容10if(dlg.DoModal()==IDOK){filename=dlg.GetFileName()
12、;//获取打开的文件名fileext=dlg.GetFileExt();//获取打开的文件扩展名if(m_PSign)//如果程序正在播放,则关闭{dwError=mciSendCommand(m_MCIDeviceID,MCI_CLOSE,0,NULL);//关闭正在播放的声音if(dwError)//如果关闭不成