文档介绍:第12章多媒体应用程序的设计
1
利用音频函数实现多媒体程序设计
为了介绍多媒体程序的设计,我们先介绍一个非常简单的例子,希望读者能够通过这个简单的例子,了解音频文件的播放方法
2
一个简单的应用实例
【例12-1】设计一个简单的音频播放程序,程序启动时,播放windows系动启动时候的音乐
;,在#ifndef _AFX_NO_AFXCMN_SUPPORT语句的上一行顶头加入语句#include <>
()函数中的return TRUE之前加上代码:
sndPlaySound("SystemStart",SND_ASYNC);
3
PlaySound()
sndPlaySound()
几个常用的音频函数
MessageBeep()函数:用来播放系统提示音
sndPlaySound()函数:播放wav音频
PlaySound()函数:播放来自资源中的声音
MessageBeep()
功能包含关系
4
用MCI控制波形声音的播放
MCIERROR mand(
MCIDEVICEID IDDevice, //接收命令消息的MCI设备ID
UINT uMsg, //发送的命令消息
DWORD mand, //命令消息的标志集
DWORD_PTR dwParam) //消息参数的结构体地址
常用的MCI设备消息见教材表12-5
5
在调用MCI设备时可用mciGetErrorString()检测错误,该函数的原型如下:
BOOL mciGetErrorString(
DWORD fdwError, //错误代码
LPTSTR lpszErrorText, //指向错误内容字串的指针
hErrorText //错误内容的缓冲区容量
)
6
【例12-2】编写一个音频播放器程序,可以选择音频文件,并控制其播放、暂停播放、暂停后的继续播放以及停止播放的功能
IDC_OPEN_BUTTON
IDC_CLOSE_BUTTON
IDC_START_BUTTON
IDC_PAUSE_BUTTON
IDC_STOP_BUTTON
IDC_EXIT_BUTTON
7
1. ,
,具体如下:
BOOL m_PSign(作为判断正在播放的标识)
BOOL m_ASign(作为判断正在播放的标识)、
DWORD dwError(用来储存错误代码)、
MCIDEVICEID m_MCIDeviceID(用来储存打开设备的ID值)
charszErrorBuf[MAXERRORLENGTH](用来储存出错内容)
8
BOOL CMCIPlayerDlg::OnInitDialog()
{ CDialog::OnInitDialog();
…
// TODO: Add extra initialization here
m_PSign=FALSE; //初始化正在播放标识
m_ASign=FALSE; //初始化正在暂停标识
m_MCIDeviceID=0; //初始化设备标识
return TRUE;
}
9
void CMCIPlayerDlg::OnOpenButton() //打开一个文件
{ CString filename; //定义CString类的filename用来存储文件名
CString fileext; //定义CString类的fileext用来存储文件扩展名
MCI_OPEN_PARMS mciOpenParms;//定义结构体变量用来存储打开文件的信息和返回的设备标识信息
DWORD dwError; //定义dwError用来储存返回的错误标识
static char szFilter[]="波形音频文件(*.wav)|*.wav|MIDI序列(*.mid)|*.mid\0";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);
//通过打开按钮时显示的内容
10