RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : MCI


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : Yagiza, 2:5013/5.25
To : All
Subj : MCI

Решил попробовать воспроизвести звук из ресурса, не используя MCI Play Resource. Для начала решил загрузить ресурс, открыть MMIO-хэндл, окрыть MCI-устройство, закрыть MCI-устройство, закрыть MMIO-хэндл, освободить ресурс. Но даже это у меня не получилось. Не удаётся открыть MCI-устройство :-(
Вот текст:
--------------------->8----------------------------
extern HWND hWndDesktop;
extern HMODULE hmodSounds;
extern HWND hWndMsgClient;
extern GAME_OPTIONS Game_Options;

MMIOINFO mmioinfo;
HMMIO hMMIO;

MCI_OPEN_PARMS mciOpenParameters;
MCI_PLAY_PARMS mciPlayParameters;
MCI_GENERIC_PARMS mciGenericParameters;

ULONG rc, ulSize, ulFlags;
char message[128];
PVOID pWave;

if (rc = DosQueryResourceSize(hmodSounds, RT_WAVE, SoundID, &ulSize))
return FALSE;

if (rc = DosGetResource(hmodSounds, RT_WAVE, SoundID, &pWave))
return FALSE;

memset( &mmioinfo, 0, sizeof(MMIOINFO) );
mmioinfo.fccIOProc=FOURCC_MEM;
mmioinfo.pIOProc=NULL;
mmioinfo.pchBuffer=(PCHAR)pWave;
mmioinfo.cchBuffer=ulSize;
ulFlags=MMIO_READ|MMIO_DENYNONE;
if (hMMIO=mmioOpen(NULL, &mmioinfo, ulFlags))
{
mciOpenParameters.hwndCallback=hWndMsgClient;
mciOpenParameters.pszDeviceType="waveaudio01";
mciOpenParameters.pszElementName=(PSZ)hMMIO;
mciOpenParameters.pszAlias=NULL;
rc = mciSendCommand(0L, MCI_OPEN, MCI_WAIT|MCI_OPEN_MMIO, &mciOpenParameters, 0);
if (rc == MCIERR_SUCCESS) // Это условие не выполняется - какая-то ошибка!
{
mciGenericParameters.hwndCallback=mciOpenParameters.hwndCallback;
mciSendCommand(mciOpenParameters.usDeviceID, MCI_CLOSE, MCI_WAIT, &mciGenericParameters, 0);
}
else
{
mciGetErrorString(rc, message, 128);
WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, message, "MCI Error!!!", 0L, MB_OK|MB_ICONHAND); // Этот мессаджбокс выдаёт какой-то мусор. Всё время разный.
sprintf(message, "rc=%d", rc);
WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, message, "MCI Error!!!", 0L, MB_OK|MB_ICONHAND); // Этот мессаджбокс выдаёт: "rc=-2"!!!
}
mmioClose(hMMIO, 0L);
}
else
{
mciGetErrorString(mmioinfo.ulErrorRet, message, 128);
WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, message, "MMIO Error!", 0L, MB_OK|MB_ICONHAND);
}

DosFreeResource(pWave);
return TRUE;
------------------------8<-------------------------

Thu 26 Feb 2004 13:01 Links (2.1pre14; OS/2 1 i386; 132x50)




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.