Страница: 1 |
ты про функции waveOutWrite ? Когда-то выводил Wav. Тут надёргал из разных функций, так что проверь. private: WAVEFORMATEX pwfx; HWAVEIN hwi; WAVEHDR WaveHeader; unsigned char *cSignal; long lSignalLength; void CSpeechDoc::PlaySound(void) { MMRESULT mRes; pwfx.wFormatTag=WAVE_FORMAT_PCM; pwfx.nChannels=1; pwfx.nSamplesPerSec=11025; pwfx.nAvgBytesPerSec=pwfx.nSamplesPerSec; pwfx.nBlockAlign=1; pwfx.wBitsPerSample=8; pwfx.cbSize=0; lcSignalLength=pwfx.nSamplesPerSec*10; cSignal = new unsigned char[lcSignalLength]; WaveHeader.lpData=(char*)cSignal; WaveHeader.dwBufferLength=lcSignalLength; WaveHeader.dwFlags=0; WaveHeader.dwLoops=0; mRes=waveInOpen(&hwi,WAVE_MAPPER,&pwfx,0,0,CALLBACK_NULL); if(mRes)AfxMessageBox("Error open"); mRes=waveInPrepareHeader(hwi,&WaveHeader,sizeof(WaveHeader)); if(mRes)AfxMessageBox("Error prepare"); mRes=waveInAddBuffer(hwi,&WaveHeader,sizeof(WaveHeader)); if(mRes)AfxMessageBox("Error add buffer"); mRes=waveInStart(hwi); if(mRes)AfxMessageBox("Error start"); WaveHeader.dwLoops=2; for(i=0;i HWAVEOUT hwo; mRes=waveOutOpen(&hwo,WAVE_MAPPER,&pwfx,(unsigned long) waveOutProc1,0,CALLBACK_FUNCTION); mRes=waveOutPrepareHeader(hwo,&WaveHeader,sizeof(WaveHeader)); mRes=waveOutWrite(hwo,&WaveHeader,sizeof(WaveHeader)); do{} while(!(WaveHeader.dwFlags & WHDR_DONE)); mRes=waveOutUnprepareHeader(hwo,&WaveHeader,sizeof(WaveHeader)); mRes=waveOutClose(hwo); delete [] cSignal; } это C + MFC. Какая разница? API и есть API. берёшь библию winmm.dll и вперёд. Вроде бы никаких страшных преобразований типов параметров функций тут нет, так что всё должно работать. Порядок вызова функций тот же. Надо только заголовок подготовить и форматы указать. WaveHeader.lpData=(char*)cSignal; WaveHeader.dwBufferLength=lcSignalLength; waveOutOpen(&hwo,WAVE_MAPPER,&pwfx,(unsigned long) waveOutProc1,0,CALLBACK_FUNCTION); waveOutPrepareHeader(hwo,&WaveHeader,sizeof(WaveHeader)); mRes=waveOutWrite(hwo,&WaveHeader,sizeof(WaveHeader)); do{} while(!(WaveHeader.dwFlags & WHDR_DONE)); mRes=waveOutUnprepareHeader(hwo,&WaveHeader,sizeof(WaveHeader)); mRes=waveOutClose(hwo); Да, я ещё забыл Callback функцию: void CALLBACK waveOutProc1( HWAVEOUT hwo, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2 ) { int i; if (uMsg==WOM_DONE) { i=1; MessageBox(NULL,"1","2",NULL); } return; } Извини, на VB нет времени переводить Страница: 1 |
Вопрос: WaveOut. Как его юзать?
Добавлено: 06.10.03 19:38
Автор вопроса: Страшный Сон
САБЖ
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
Swift
Вопросов: 5
Ответов: 43
Профиль | | #1
Добавлено: 07.10.03 16:18
Номер ответа: 2
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #2
Добавлено: 07.10.03 17:13
Да с ним целая куча функций. Просто нужна какая-нибудь статья, типа как их юзать, чтоб массив переменных вывести на колонки.
Номер ответа: 3
Автор ответа:
Swift
Вопросов: 5
Ответов: 43
Профиль | | #3
Добавлено: 07.10.03 19:09
Номер ответа: 4
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #4
Добавлено: 08.10.03 00:40
Но это ведь не VB, я чего-то не въехал, нужно что-то другое.
Номер ответа: 5
Автор ответа:
Swift
Вопросов: 5
Ответов: 43
Профиль | | #5
Добавлено: 08.10.03 10:52