打开:
m_mciOpen.lpstrElementName = filename;
m_strFileName = filename;
if(mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD)&m_mciOpen))
{
return FALSE;
}
在关闭时
mciSendCommand(m_mciOpen.dwDeviceID,MCI_CLOSE,0,NULL)
总是异常。如何解决?
m_mciOpen.lpstrElementName = filename;
m_strFileName = filename;
if(mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD)&m_mciOpen))
{
return FALSE;
}
在关闭时
mciSendCommand(m_mciOpen.dwDeviceID,MCI_CLOSE,0,NULL)
总是异常。如何解决?
mciSendCommand(mciID, MCI_CLOSE, 0L,
(DWORD)(LPMCI_GENERIC_PARMS)&mciClose);
{
DWORD dwResult=0;
if (m_nDeviceID)MCI_OPEN_PARMS mciOpenParms;
mciOpenParms.lpstrDeviceType=(LPSTR)MCI_DEVTYPE_WAVEFORM_AUDIO;
//open the wave device
dwResult=mciSendCommand(NULL,MCI_OPEN,
MCI_OPEN_TYPE|MCI_OPEN_TYPE_ID|MCI_WAIT,
(DWORD)(LPVOID)&mciOpenParms);
//save device identifier,will use eith other MCI commands
m_nDeviceID=mciOpenParms.wDeviceID;
//display error message if failed
if(dwResult)
DisplayErrorMsg(dwResult);
}
//return result of MCI operation
return dwResult;
}DWORD CWave::CloseDevice()
{
DWORD dwResult=0;//close if currently open
if(m_nDeviceID)
{//close the MCI device
dwResult=mciSendCommand(m_nDeviceID,MCI_CLOSE,NULL,NULL);//display error message if failed
if(dwResult)
DisplayErrorMsg(dwResult);//set identifier to close state
else
m_nDeviceID=0;
}
异常
播放:
void CMyWnd::Play(CString str)
{
if(str=="")
{
MCI_DGV_PLAY_PARMS mciPlay;
DWORD dwFlags=0;
mciSendCommand(wDeviceID,MCI_PLAY,dwFlags,
(DWORD)(LPVOID)&mciPlay); }
else
{
if(wDeviceID!=0)
{
mciSendCommand(wDeviceID,MCI_CLOSE,NULL,NULL);
}
wDeviceID=0;
DWORD dwReturn;
MCI_DGV_OPEN_PARMS mciOpen;
mciOpen.lpstrElementName=(LPSTR)str.GetBuffer(0);
mciOpen.wDeviceID=0;
mciOpen.hWndParent=CWnd::GetSafeHwnd();
mciOpen.dwStyle=WS_CHILD;
dwReturn=mciSendCommand(0,MCI_OPEN,(DWORD)
(MCI_OPEN_ELEMENT|MCI_DGV_OPEN_PARENT
|MCI_DGV_OPEN_WS),
(DWORD)(LPSTR)&mciOpen);
wDeviceID=mciOpen.wDeviceID;
//////////////////////////
MCI_DGV_PUT_PARMS PutParms;
PutParms.rc.left=0;
PutParms.rc.top=0;
PutParms.rc.right=ix;
PutParms.rc.bottom=iy;
mciSendCommand(wDeviceID,MCI_PUT,MCI_WAIT|
MCI_DGV_PUT_CLIENT|
MCI_DGV_PUT_WINDOW|MCI_DGV_RECT,
(DWORD)(LPVOID)&PutParms);
////////////////////////////////
MCI_DGV_PLAY_PARMS mciPlay;
DWORD dwFlags=0;
mciSendCommand(wDeviceID,MCI_PLAY,dwFlags,
(DWORD)(LPVOID)&mciPlay); }
}
void CMyWnd::Pause()
{ MCI_DGV_PAUSE_PARMS PauseParms;
mciSendCommand(wDeviceID,MCI_PAUSE,0,(DWORD)(LPVOID)
&PauseParms);
}
关闭:
void CMyWnd::Close()
{
if(wDeviceID!=0)
{
mciSendCommand(wDeviceID,MCI_CLOSE,NULL,NULL);
}
}