Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: WaveOut. Как его юзать? Добавлено: 06.10.03 19:38  

Автор вопроса:  Страшный Сон
САБЖ

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 Swift



Вопросов: 5
Ответов: 43
 Профиль | | #1 Добавлено: 07.10.03 16:18

ты про функции waveOutWrite ?

Ответить

Номер ответа: 2
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #2 Добавлено: 07.10.03 17:13
Да с ним целая куча функций. Просто нужна какая-нибудь статья, типа как их юзать, чтоб массив переменных вывести на колонки.

Ответить

Номер ответа: 3
Автор ответа:
 Swift



Вопросов: 5
Ответов: 43
 Профиль | | #3 Добавлено: 07.10.03 19:09

Когда-то выводил 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;

}

Ответить

Номер ответа: 4
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #4 Добавлено: 08.10.03 00:40
Но это ведь не VB, я чего-то не въехал, нужно что-то другое.

Ответить

Номер ответа: 5
Автор ответа:
 Swift



Вопросов: 5
Ответов: 43
 Профиль | | #5 Добавлено: 08.10.03 10:52

это 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 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам