bool CDAudio::Play(int no) { if (!IsOpen) return false; Stop(); PlayTrack = no; no++; // 这里是以MixedCD为基准,所以播放1首乐曲 // 检查乐曲长度 // 设定只播放此范围 TCHAR request[64]; _stprintf(request, _T("length track %d"), no); TCHAR result[128]; if (!MciStatus(request, result, sizeof(result))) return false; _stprintf(request, _T("from %d:00:00:00 to %d:%s"), no, no, result); if (!MciPlay(request)) return false; return true; }
bool CWaveOut::Play(LPCTSTR name) { Stop(); if (!MciOpen(_T("waveaudio"), name)) return false; if (!MciPlay(_T(""))) return false; playing = true; return true; }
void CMidi::PlayFile() { DWORD dwReturn; MCI_OPEN_PARMS mciOpenParms; char mciErrorString[MCI_ERROR_LENGTH]; UINT mciErrorLen; BOOL KnownError = FALSE; Close(); mciOpenParms.lpstrDeviceType = "sequencer"; mciOpenParms.lpstrElementName = LPCSTR(m_sMidiFile); if (dwReturn = mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, (DWORD)(LPVOID) &mciOpenParms)) { mciErrorLen = MCI_ERROR_LENGTH; KnownError = mciGetErrorString(dwReturn, mciErrorString, mciErrorLen); TRACE("Couldn't Open Midi Device in constructor\n"); if (KnownError) TRACE("MCI ERROR : %s\n", mciErrorString); else TRACE("MCI ERROR : Unknown Error (%x)!!!!! \n",dwReturn); // Failed to open device. Don't close it; just return error. m_bMidiInitialized = FALSE; return; } // The device opened successfully; get the device ID. m_uMCIDeviceID = mciOpenParms.wDeviceID; m_bMidiInitialized = TRUE; MciPlay(); }
LRESULT CMidi::CallBack(WPARAM wFlags,LPARAM lDevID) { if ((wFlags & MCI_NOTIFY_SUCCESSFUL) && (UINT)lDevID == m_uMCIDeviceID) MciPlay(); return 0; }
void CMidi::UnMute() { m_bMute=FALSE; MciPlay(); }