Всем здрасте! Работая с WaveIn.... хочу естественно при заполнении буфера вызывать процедуру обработки. Ну, вроде все сделал как просят. (см.код). И при открытии ввода она действительно вызывается (хотя это никому не надо!)! А при заполнении буфера -ни фига!!! В чем дело ...?
| Код | Type WAVEFORMATEX: wFormatTag As Integer: nChannels As Integer: nSamplesPerSec As Long nAvgBytesPerSec As Long: nBlockAlign As Integer: wBitsPerSample As Integer: cbSize As Integer: End Type Type WAVEHDR: lpData As Long: dwBufferLength As Long: dwBytesRecorded As Long: dwUser As Long: dwFlags As Long: dwLoops As Long: lpNext As Long: Reserved As Long: End Type
Declare Function waveInGetNumDevs Lib "winmm.dll" () As Long Public Declare Function waveInAddBuffer Lib "winmm.dll" (ByVal hwavein As Long, lpWaveInHdr As WAVEHDR, ByVal uSize As Long) As Long Declare Function waveInReset Lib "winmm.dll" (ByVal hwavein As Long) As Long Declare Function waveInOpen Lib "winmm.dll" (lphWaveIn As Long, ByVal uDeviceID As Long, _ lpFormat As WAVEFORMATEX, ByVal dwCallback As Long, ByVal dwInstance As Long, ByVal dwFlags As Long) As Long Declare Function waveInClose Lib "winmm.dll" (ByVal hwavein As Long) As Long Declare Function waveInPrepareHeader Lib "winmm.dll" (ByVal hwavein As Long, lpWaveInHdr As WAVEHDR, ByVal uSize As Long) As Long Declare Function waveInUnprepareHeader Lib "winmm.dll" (ByVal hwavein As Long, lpWaveInHdr As WAVEHDR, ByVal uSize As Long) As Long Declare Function waveInStart Lib "winmm.dll" (ByVal hwavein As Long) As Long Declare Function waveInStop Lib "winmm.dll" (ByVal hwavein As Long) As Long Public hwavein&, wdt(10000) As Integer, WH As WAVEHDR, WF As WAVEFORMATEX, FVI As Integer Public exam(9, 30000) As Integer, exfr(9, 30000) As Integer, ppp As Integer, nmbutton As Integer, nmcall As Integer Private CALLBACK_NULL Dim ddd As Integer Public Const MM_WIM_DATA = &H3C0
Public Sub start(): If waveInGetNumDevs <= 0 Then MsgBox "Unable to detect any wave input devices": End WF.wFormatTag = 1: WF.nChannels = 1: WF.nBlockAlign = 1: WF.nSamplesPerSec = 22050 WF.wBitsPerSample = 16: WF.nAvgBytesPerSec = 44100: WF.cbSize = 0 WH.lpData = VarPtr(wdt(0)): WH.dwBufferLength = 20000: WH.dwFlags = 0 100: aa = waveInOpen(hwavein, -1&, WF, cbf, 0, CALLBACK_FUNCTION): If aa <> 0 Then MsgBox "Ââîä çàíÿò ": Exit Sub waveInStart hwavein: waveInPrepareHeader hwavein, WH, Len(WH): 'çàïóñê óõà DoEvents: DoEvents: DoEvents waveInAddBuffer hwavein, WH, Len(WH): End Sub Public Function cbf(): MsgBox ddd: End Function
|
|