设为首页 加入收藏

TOP

11.2.2 播放WAVE文件
2013-10-07 00:11:04 来源: 作者: 【 】 浏览:62
Tags:11.2.2 播放 WAVE 文件

11.2.2  播放WAVE文件

WAVE音频文件是比较常用的音频文件,对于音频的播放可以有多种方法,下面使用mciSendCommand函数播放WAVE文件。
例如:
播放WAVE文件的应用程序设计步骤如下。
ch1105实例位置:mr\11\sl\05
(1)创建一个基于对话框的应用程序。
(2)向对话框中添加一个群组框控件、一个编辑框控件和两个按钮控件
(3)在对话框的源文件WavePlayDlg.cpp中加入多媒体库的头文件引用及多媒体静态库的链接。

#include 
#pragma comment(lib, "winmm.lib")
(4)在函数OnInitDialog中将编辑框控件设置为不可用。代码如下:
BOOL CWavePlayDlg::OnInitDialog()
{
……//此处代码省略
GetDlgItem(IDC_PATH)->EnableWindow(false);
return TRUE;
}
(5)处理“选择文件” 按钮的单击事件,实现添加将要播放文件的路径。代码如下:
void CWavePlayDlg::OnAddpath() 
{
CFileDialog file(TRUE,NULL,NULL,NULL,"文件(*.wav)|*.wav||");
if(file.DoModal()==IDOK)
{
CString strname=file.GetPathName();
GetDlgItem(IDC_PATH)->SetWindowText(strname);
}   
}
(6)处理“播放” 按钮的单击事件,使用mciSendCommand函数向音频设备发送打开设备、设置播放参数、播放文件等指令。代码如下:
void CWavePlayDlg::OnPlay() 
{
CString tmp;
GetDlgItem(IDC_PATH)->GetWindowText(tmp);
if(tmp.IsEmpty())
{
MessageBox("清选择播放文件");
return;
}
MCIDEVICEID m_nDeviceID;
MCIDEVICEID m_nElementID;
MCI_OPEN_PARMS mciOpenParms;

mciOpenParms.lpstrDeviceType=(LPSTR)MCI_DEVTYPE_WAVEFORM_AUDIO;
mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_TYPE_ID|MCI_WAIT,
(DWORD)(LPVOID)&mciOpenParms);
m_nDeviceID=mciOpenParms.wDeviceID;

MCI_OPEN_PARMS mciOpen;
memset(&mciOpen,0,sizeof(MCI_OPEN_PARMS));
mciOpen.lpstrElementName=tmp;
mciSendCommand(m_nDeviceID,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpen);
m_nElementID=mciOpen.wDeviceID;

MCI_PLAY_PARMS mciPlay;
mciPlay.dwCallback=(DWORD)this->GetSafeHwnd();
if(mciSendCommand(m_nElementID,MCI_PLAY,MCI_NOTIFY,
(DWORD)(LPVOID)&mciPlay)!=MMSYSERR_ERROR)
{
mciSendCommand(m_nDeviceID, MCI_CLOSE, 0, NULL);
}
}

(7)通过类向导添加关闭窗体消息的实现函数DestroyWindow,在该函数中实现关闭音频设备。
BOOL CWavePlayDlg::DestroyWindow() 
{
mciSendCommand(m_nDeviceID, MCI_CLOSE, 0, NULL);
return CDialog::DestroyWindow();
}
(8)程序运行效果如图11.5所示。

图11.5  WAVE文件播放

【责任编辑:阚书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇11.3.1 播放Avi文件 下一篇11.2.3 音量大小控制

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: