线程里如何用mci_stop结束播放的音乐
线程里怎么用mci_stop结束播放的音乐
在线程里要播放一段音乐
void ThreadFunc4()
{
m_bRun=TRUE;
if(m_bRun)
{
char str[128]={0};
int i = 0;
char buf[128]={0};
mciOpen.lpstrDeviceType = "mpegvideo";
mciOpen.lpstrElementName = "D://summer.mp3";
mciError = mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,(DWORD)&mciOpen);
if(mciError)
{
mciGetErrorString(mciError,buf,128);
printf("%s/n",buf);
AfxMessageBox(buf);
return;
}
DeviceID = mciOpen.wDeviceID ;
mciError = mciSendCommand(DeviceID,MCI_PLAY,0,(DWORD)&mciPlay);
}
else return;
}
其中cpp中定义了:
volatile BOOL m_bRun;
MCIERROR mciError;
MCI_PLAY_PARMS mciPlay;
MCI_OPEN_PARMS mciOpen;
MCIDEVICEID DeviceID;
在结束音乐的代码里,线程应该是结束了,但是播放音乐还没停止,mci_stop该怎么传递呢
void CMultiThread1Dlg::OnStop()
{
m_bRun4=FALSE;
if(DeviceID)
{
MCI_GENERIC_PARMS mciStop;
mciSendCommand(DeviceID, MCI_STOP,0, (DWORD)&mciStop); //这句为什么执行不了呢?
}
}
------解决方案--------------------
在线程里要播放一段音乐
void ThreadFunc4()
{
m_bRun=TRUE;
if(m_bRun)
{
char str[128]={0};
int i = 0;
char buf[128]={0};
mciOpen.lpstrDeviceType = "mpegvideo";
mciOpen.lpstrElementName = "D://summer.mp3";
mciError = mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,(DWORD)&mciOpen);
if(mciError)
{
mciGetErrorString(mciError,buf,128);
printf("%s/n",buf);
AfxMessageBox(buf);
return;
}
DeviceID = mciOpen.wDeviceID ;
mciError = mciSendCommand(DeviceID,MCI_PLAY,0,(DWORD)&mciPlay);
}
else return;
}
其中cpp中定义了:
volatile BOOL m_bRun;
MCIERROR mciError;
MCI_PLAY_PARMS mciPlay;
MCI_OPEN_PARMS mciOpen;
MCIDEVICEID DeviceID;
在结束音乐的代码里,线程应该是结束了,但是播放音乐还没停止,mci_stop该怎么传递呢
void CMultiThread1Dlg::OnStop()
{
m_bRun4=FALSE;
if(DeviceID)
{
MCI_GENERIC_PARMS mciStop;
mciSendCommand(DeviceID, MCI_STOP,0, (DWORD)&mciStop); //这句为什么执行不了呢?
}
}
------解决方案--------------------