void CWavePlayDlg::OnPlay() { CString tmp; GetDlgItem(IDC_PATH)->GetWindowText(tmp); if(tmp.IsEmpty()) { MessageBox("清选择播放文件"); return; } MCIDEVICEID m_nDeviceID; MCIDEVICEID m_nElementID; MCI_OPEN_PARMS mciOpenParms;mciOpenParms.lpstrDeviceType=(LPSTR)MCI_DEVTYPE_WAVEFORM_AUDIO; mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_TYPE_ID|MCI_WAIT, (DWORD)(LPVOID)&mciOpenParms); m_nDeviceID=mciOpenParms.wDeviceID; MCI_OPEN_PARMS mciOpen; memset(&mciOpen,0,sizeof(MCI_OPEN_PARMS)); mciOpen.lpstrElementName=tmp; mciSendCommand(m_nDeviceID,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpen); m_nElementID=mciOpen.wDeviceID; MCI_PLAY_PARMS mciPlay; mciPlay.dwCallback=(DWORD)this->GetSafeHwnd(); if(mciSendCommand(m_nElementID,MCI_PLAY,MCI_NOTIFY, (DWORD)(LPVOID)&mciPlay)!=MMSYSERR_ERROR) { mciSendCommand(m_nDeviceID, MCI_CLOSE, 0, NULL); } }
|