//添加全局变量
CString aa;
unsigned long int m_count;
DWORD cdlen;//某个音频文件的总时间长度
DWORD cdfrom,cdto;//歌曲的起点和终点
//添加函数
DWORD CMainFrame::getinfo(DWORD item)
{
//MCI接口对象的状态
MCI_STATUS_PARMS mcistatusparms;
//歌曲格式
mcistatusparms.dwCallback=(DWORD)GetSafeHwnd();
//待获取的项目
mcistatusparms.dwItem=item;
mcistatusparms.dwReturn=0;
//想多媒体设备发送指令,获取当前的状态参数
mciSendCommand(m_count,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)&mcistatusparms);
return mcistatusparms.dwReturn;
}
void CMainFrame::OnSelectMusic()
{
CFileDialog f(true);// 文件对话框处于打开状态
// TODO: Add your command handler code here
f.m_ofn.Flags |=512;//可以选取多个曲目
f.m_ofn.lpstrFilter="All Support type\0*.*\0\0";//文件格式任意
POSITION pos=f.GetStartPosition();//选取目标音频文件
if(f.DoModal()==IDOK)//选定List控件中的添加位置,将文件添加在选定位置后边
{
while (pos != NULL)
{
aa=f.GetNextPathName(pos);//将添加的音频文件路径存放在数组file中
UpdateData(false);
}
}
mciSendString("close wave", 0, 0, NULL);
mciSendCommand(m_count,MCI_CLOSE,0,NULL);//向多媒体设备发送消息,关闭多媒体设//备
MCI_OPEN_PARMS mciopenparms;//打开
MCI_PLAY_PARMS mciplayparms;//播放
mciopenparms.lpstrElementName=aa;//播放路径
mciopenparms.lpstrDeviceType=NULL;//文件类型
mciSendCommand(0,MCI_OPEN,MCI_DEVTYPE_WAVEFORM_AUDIO,(DWORD)(LPVOID)&mciopenparms);//向MCI设备发送命令消息,包含歌曲文件的类型和路径
m_count=mciopenparms.wDeviceID;//多媒体设备类型编号
mciplayparms.dwCallback=(DWORD)GetSafeHwnd();//歌曲播放支持类型
cdlen=getinfo(MCI_STATUS_LENGTH); //得到曲目长度
cdto=MCI_MAKE_HMS(MCI_HMS_HOUR(cdlen),MCI_HMS_MINUTE(cdlen),MCI_HMS_SECOND(cdlen));//设置播放完毕某音频文件需要的时间n时n分n秒
mciplayparms.dwFrom=cdfrom;
mciplayparms.dwTo=cdto;
mciSendCommand(m_count,MCI_PLAY,MCI_TO|MCI_FROM,(DWORD)(LPVOID)& mciplayparms);//向多媒体设备发送播放文件命令
UpdateData(false);
}
mfc 选择音乐播放
最新推荐文章于 2022-04-02 18:27:03 发布