123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- #include "main.h"
- MCIERROR MCISendCommand(MCIDEVICEID IDDevice, UINT uMsg, DWORD fdwCommand, DWORD_PTR dwParam)
- {
- MCIERROR nErr = mciSendCommand(IDDevice, uMsg, fdwCommand, dwParam);
- #if 0
- if (nErr)
- {
- wchar_t szError[256] = {0};
- mciGetErrorString(nErr, szError, 256);
- MessageBox(NULL,szError,L"MCI CD Error",MB_OK);
- }
- #endif
- return nErr;
- }
- int isMediaPresent(MCIDEVICEID wDeviceID)
- {
- MCI_STATUS_PARMS p;
- p.dwItem=MCI_STATUS_MEDIA_PRESENT;
- if (MCISendCommand(wDeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD_PTR)&p)) return 1;
- return p.dwReturn?1:0;
- }
- BOOL CDOpen(MCIDEVICEID* lpDeviceID, int device, const wchar_t *alias)
- {
- //OutputDebugString("Calling cdopen()\n");
- MCI_OPEN_PARMS sMCIOpen;
- MCI_SET_PARMS sMCISet;
- wchar_t zDevice[3]={(wchar_t)device,':',0};
- DWORD nErr;
- sMCIOpen.dwCallback = 0;
- sMCIOpen.wDeviceID = 0;
- sMCIOpen.lpstrAlias = alias;
- sMCIOpen.lpstrDeviceType = (LPCTSTR) MCI_DEVTYPE_CD_AUDIO;
- sMCIOpen.lpstrElementName = zDevice;
- nErr = MCISendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_SHAREABLE |
- MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT |
- (alias ? MCI_OPEN_ALIAS : 0), (DWORD_PTR) &sMCIOpen);
- if (nErr)
- {
- nErr = MCISendCommand(0, MCI_OPEN, MCI_OPEN_TYPE |
- MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT |
- (alias ? MCI_OPEN_ALIAS : 0), (DWORD_PTR) &sMCIOpen);
- if (nErr)
- {
- return FALSE;
- }
- }
-
- sMCISet.dwTimeFormat = MCI_FORMAT_TMSF;
- MCISendCommand (sMCIOpen.wDeviceID, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD_PTR) &sMCISet);
-
- *lpDeviceID = sMCIOpen.wDeviceID;
- return TRUE;
- }
- void CDClose(MCIDEVICEID* lpDeviceID)
- {
- MCI_GENERIC_PARMS sMCIGeneric;
- sMCIGeneric.dwCallback = (DWORD_PTR) line.hMainWindow;
- MCISendCommand(*lpDeviceID, MCI_CLOSE, MCI_WAIT, (DWORD_PTR) &sMCIGeneric);
- *lpDeviceID = 0;
- }
- void CDEject(MCIDEVICEID wDeviceID)
- {
- MCI_SET_PARMS mciset;
- MCISendCommand (wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN,(DWORD_PTR) &mciset);
- }
- unsigned int CDGetTracks(MCIDEVICEID wDeviceID)
- {
- MCI_STATUS_PARMS sMCIStatus;
- sMCIStatus.dwItem = MCI_STATUS_NUMBER_OF_TRACKS;
- if (MCISendCommand (wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT,(DWORD_PTR) &sMCIStatus)) return -1;
- return sMCIStatus.dwReturn;
- }
- unsigned int CDGetCurrTrack(MCIDEVICEID wDeviceID)
- {
- MCI_STATUS_PARMS sMCIStatus;
- sMCIStatus.dwItem = MCI_STATUS_POSITION;
- MCISendCommand (wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT,(DWORD_PTR) &sMCIStatus);
- return ((int) MCI_TMSF_TRACK (sMCIStatus.dwReturn));
- }
- int CDPlay(MCIDEVICEID wDeviceID, unsigned int nTrack, BOOL bResume, unsigned int nMin, unsigned int nSec, unsigned int endms)
- {
- MCI_PLAY_PARMS sMCIPlay;
- unsigned int nActualTrack = nTrack;
- sMCIPlay.dwFrom = MCI_MAKE_TMSF (nActualTrack, nMin, nSec, 0);
- sMCIPlay.dwTo = MCI_MAKE_TMSF (nActualTrack, endms/60000, (endms/1000)%60,0);
- if (!bResume)
- {
- return MCISendCommand (wDeviceID, MCI_PLAY, MCI_FROM | MCI_TO ,(DWORD_PTR) &sMCIPlay);
- }
- else
- {
- return MCISendCommand (wDeviceID, MCI_PLAY, MCI_FROM | MCI_TO, (DWORD_PTR) (LPVOID) &sMCIPlay);
- }
- }
- void CDStop(MCIDEVICEID wDeviceID)
- {
- MCISendCommand(wDeviceID, MCI_STOP, 0, 0);
- }
- void CDPause(MCIDEVICEID wDeviceID)
- {
- MCISendCommand(wDeviceID, MCI_PAUSE, 0,0);
- }
- unsigned int CDGetTrackLength(MCIDEVICEID wDeviceID, unsigned int nTrack)
- {
- MCI_STATUS_PARMS sMCIStatus;
- int r;
- sMCIStatus.dwItem = MCI_STATUS_POSITION ;
- sMCIStatus.dwTrack = nTrack+1;
- if (MCISendCommand (wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT,(DWORD_PTR) &sMCIStatus)) // if error than last track
- {
- sMCIStatus.dwItem = MCI_STATUS_LENGTH;
- sMCIStatus.dwTrack = nTrack;
- if (MCISendCommand (wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT,(DWORD_PTR) &sMCIStatus)) return -1000;
- return sMCIStatus.dwReturn;
- }
- r=sMCIStatus.dwReturn;
- sMCIStatus.dwItem = MCI_STATUS_POSITION ;
- sMCIStatus.dwTrack = nTrack;
- if (MCISendCommand (wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT,(DWORD_PTR) &sMCIStatus)) return -1000;
- return r-sMCIStatus.dwReturn;
- }
- BOOL CDID(MCIDEVICEID wDeviceID, wchar_t *id, size_t len)
- {
- MCI_INFO_PARMS sMCIInfo;
- sMCIInfo.dwCallback=0;
- sMCIInfo.dwRetSize=len;
- sMCIInfo.lpstrReturn=id;
- DWORD nErr= MCISendCommand(wDeviceID, MCI_INFO, MCI_INFO_MEDIA_IDENTITY, (DWORD_PTR)&sMCIInfo);
- return !nErr;
- }
|