设计音频播放器
下面来介绍如何利用mciSendCommand函数设计一个音频播放器。具体步骤如下:
(1)创建一个基于对话框的应用程序,工程名称为“AudioMediaPlayer”。
(2)设计对话框资源如图1所示。
.jpg)
图1 对话框资源设计
(3)引用Mmsystem.h头文件和Winmm.lib库文件。
#include "Mmsystem.h" //应用头文件
#pragma comment (lib,"Winmm.lib") //引用库文件
提示:为了使用mciSendCommand函数,需要引用Mmsystem.h头文件,并链接Winmm.lib库文件。
(4)定义一个CPlayWave类,具体代码播放wav文件的步骤3。
(5)处理“添加”按钮的单击事件,添加音频文件到列表中。
void CAudioMediaPlayerDlg::OnAddList()
{
m_List.ResetContent(); //清空列表
CFileDialog flDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT
|OFN_ALLOWMULTISELECT, "音频文件|*.wav;*.mp3||",this); //定义一个问价打开对话框
if (flDlg.DoModal()==IDOK) //判断用户是否按OK按钮
{
POSITION pos = flDlg.GetStartPosition(); //获取文件名列表的首位置
while(pos != NULL) //利用循环遍历文件名列表
{
m_List.AddString(flDlg.GetNextPathName(pos)); //将文件名添加的列表框控件中
}
}
}
(6)向对话框类中添加CPlayWave类型成员wave。
CPlayWave wave;
(7)处理列表框的双击事件,播放当前选择的歌曲。
void CAudioMediaPlayerDlg::OnDblclkList()
{
int selIndex = m_List.GetCurSel(); //获取当前选择的列表项索引
if (selIndex != LB_ERR) //判断是否有项目被选中
{
CString str; //定义一个字符串对象
m_List.GetText(selIndex,str); //根据索引获取当前项目的字符串
wave.Stop(); //停止播放
wave.Play(m_hWnd,str); //开始播放歌曲
}
}
(8)运行程序,效果如图2所示。
.jpg)
图2 音频播放器