我写了一个音乐播放器,现在遇到了一个问题,就是用MCI函数只能将同一首歌曲文件打开一次,如果第二次再用MCI_OPEN打开就不行了,而且我在打开之前先关闭了的,请各位帮忙解决一下。我的一些代码如下:DWORD CMusicPlayer::MusicOpen(CString musicPathname)
{
//用MCI命令打开lpstrpath指定的MP3文件
MCI_OPEN_PARMS mciOpen; //定义一个结构体,用于获取文件相关信息
mciOpen.lpstrDeviceType = NULL; //结构体重描述设备类型的成员
mciOpen.lpstrElementName = musicPathname; //结构体中打开文件的路径名字 mciOpen.lpstrElementName = musicPathname;
DWORD dwReturnOpen = mciSendCommand (NULL, MCI_OPEN,
MCI_OPEN_ELEMENT,
(DWORD)(LPVOID) &mciOpen);
//mciSendCommand操作成功返回0
if(dwReturnOpen == 0)//如果返回0表示打开成功
{
m_wDeviceIDNow = mciOpen.wDeviceID; //得到设备的ID号(这个很重要后面也用到)
}
else//否则打开失败
{
m_wDeviceIDNow = NULL;
}
return dwReturnOpen;}//关闭当前打开的MP3文件
DWORD CMusicPlayer::MusicClose()
{
MCI_GENERIC_PARMS mciGP; //跟前面的播放暂停可以列到一起
DWORD dwReturnClose=mciSendCommand(m_wDeviceIDNow,MCI_CLOSE,MCI_NOTIFY,(DWORD)(LPVOID)&mciGP);
return dwReturnClose;
}
{
//用MCI命令打开lpstrpath指定的MP3文件
MCI_OPEN_PARMS mciOpen; //定义一个结构体,用于获取文件相关信息
mciOpen.lpstrDeviceType = NULL; //结构体重描述设备类型的成员
mciOpen.lpstrElementName = musicPathname; //结构体中打开文件的路径名字 mciOpen.lpstrElementName = musicPathname;
DWORD dwReturnOpen = mciSendCommand (NULL, MCI_OPEN,
MCI_OPEN_ELEMENT,
(DWORD)(LPVOID) &mciOpen);
//mciSendCommand操作成功返回0
if(dwReturnOpen == 0)//如果返回0表示打开成功
{
m_wDeviceIDNow = mciOpen.wDeviceID; //得到设备的ID号(这个很重要后面也用到)
}
else//否则打开失败
{
m_wDeviceIDNow = NULL;
}
return dwReturnOpen;}//关闭当前打开的MP3文件
DWORD CMusicPlayer::MusicClose()
{
MCI_GENERIC_PARMS mciGP; //跟前面的播放暂停可以列到一起
DWORD dwReturnClose=mciSendCommand(m_wDeviceIDNow,MCI_CLOSE,MCI_NOTIFY,(DWORD)(LPVOID)&mciGP);
return dwReturnClose;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货