线程里如何用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); //这句为什么执行不了呢?
}
}

------解决方案--------------------
探讨
先用MCI_PAUSE再用MCI_CLOSE吗?