WinAPI: midiInPrepareHeader - 为 MIDI 输入准备一个缓冲区
2008-02-21 19:54
501 查看
提示:
缓冲区写满后送回应用程序.
在缓冲区给 midiInAddBuffer 前, 先要调用 midiInPrepareHeader 准备; 还要调用 GlobalAlloc 给 TWaveHdr 和其中的 lpData 指向的缓冲区分配内存(使用 GMEM_MOVEABLE、GMEM_SHARE), 并用 GlobalLock 锁定.
缓冲区写满后送回应用程序.
在缓冲区给 midiInAddBuffer 前, 先要调用 midiInPrepareHeader 准备; 还要调用 GlobalAlloc 给 TWaveHdr 和其中的 lpData 指向的缓冲区分配内存(使用 GMEM_MOVEABLE、GMEM_SHARE), 并用 GlobalLock 锁定.
//声明: midiInPrepareHeader( hMidiIn: HMIDIIN; {设备句柄} lpMidiInHdr: PMidiHdr; {TMidiHdr 结构指针} uSize: UINT {TMidiHdr 结构大小} ): MMRESULT; {成功返回 0; 可能的错误值如下:} MMSYSERR_INVALHANDLE = 5; {设备句柄无效} MMSYSERR_NOMEM = 7; {不能分配或锁定内存} MIDIERR_UNPREPARED = 64; {TMidiHdr 没有准备好} //TMidiHdr 是 midihdr_tag 结构的重定义: midihdr_tag = record lpData: PChar; {专用缓冲区的指针} dwBufferLength: DWORD; {指定缓冲区长度} dwBytesRecorded: DWORD; {输入时, 指定缓冲区中的数据量} dwUser: DWORD; {指定用户数据} dwFlags: DWORD; {指定缓冲区信息标志} lpNext: PMidiHdr; {保留(给设备)} reserved: DWORD; {保留(给设备)} dwOffset: DWORD; {回调开始时, 缓冲区的偏移} dwReserved: array[0..7] of DWORD; {保留(给系统)} end; //dwFlags 的可选值: MHDR_DONE = $00000001; {设备已把缓冲区交还给程序} MHDR_PREPARED = $00000002; {已为 midiInPrepareHeader 或 midiOutPrepareHeader 准备好缓冲区} MHDR_INQUEUE = $00000004; {保留(给设备)} MHDR_ISSTRM = $00000008; {是流缓冲区} //举例:
相关文章推荐
- WinAPI: midiOutPrepareHeader - 为 MIDI输出准备一个缓冲区
- WinAPI: waveInPrepareHeader - 为波形输入准备一个缓冲区
- WinAPI: midiInAddBuffer - 向 MIDI 输入设备发送一个输入缓冲区
- WinAPI: waveInAddBuffer - 向波形输入设备发送一个输入缓冲区
- 【学习笔记】关于输入缓冲区。一个不规范的字符赋值语句引发的讨论
- WinAPI: midiInOpen - 打开 MIDI 输入设备
- WinAPI: midiInGetID - 获取输入设备 ID
- WinAPI: midiInMessage - 向 MIDI 输入设备发送一条消息
- 一个字符变量存储到动态分配内存引发的输入问题解决--连续输入scanf函数存在缓冲区的问题
- WinAPI: waveOutPrepareHeader - 准备一个波形数据块用于播放
- WinAPI: midiInStart - 启动输入
- WinAPI: midiInGetDevCaps - 查询输入设备性能
- WinAPI: midiInUnprepareHeader - 清除由 midiInPrepareHeader 完成的准备
- WinAPI: midiInStop - 停止输入
- WinAPI: midiOutUnprepareHeader - 清除由 midiOutPrepareHeader 完成的准备
- WinAPI: midiInReset - 重置输入
- 汇编语言: 试编制一个程序:从键盘输入一行字符,要求第一个键入的字符必须是空格符,如不 是,则退出程序;如是,则开始接收键入的字符并顺序存放在首地址为buffer的缓冲区中(空 格符不存入),直到接收
- WinAPI: midiInGetNumDevs - 获取 MIDI 输入设备的数目
- WinAPI: midiInClose - 关闭输入设备
- 将一个输入的字母,转换成第4个字母