摘要: 提示: 缓冲区写满后送回应用程序; 输入缓冲区只用于系统互斥的消息; 在缓冲区传给 midiInAddBuffer 之前, 先要调用 midiInPrepareHeader 准备; 还要调用 GlobalAlloc 给 TMidiHdr 和其中 lpData 指向的缓冲区分配内存(使用 GMEM_MOVEABLE、GMEM_SHARE), 并用 GlobalLock 锁定. //声明: ... 阅读全文
posted @ 2008-02-22 22:47 万一 阅读(1803) 评论(0) 推荐(0)
摘要: 提示: 错误文本的长度一般不超过 MAXERRORLENGTH = 128; 如果缓冲区太小, 文本会被截断. //声明: midiOutGetErrorText( mmrError: MMRESULT; {错误号} lpText: PChar; {缓冲区} uSize: UINT {缓冲区大小} ): MMRESULT; {成功返回 0... 阅读全文
posted @ 2008-02-22 22:30 万一 阅读(1270) 评论(0) 推荐(0)
摘要: 提示: 错误文本的长度一般不超过 MAXERRORLENGTH = 128; 如果缓冲区太小, 文本会被截断. //声明: midiInGetErrorText( mmrError: MMRESULT; {错误号} lpText: PChar; {缓冲区} uSize: UINT {缓冲区大小} ): MMRESULT; {成功返回 0;... 阅读全文
posted @ 2008-02-22 22:29 万一 阅读(1170) 评论(0) 推荐(0)
摘要: //声明: midiInMessage( hMidiIn: HMIDIIN; {设备句柄} uMessage: UINT; {消息} dw1: DWORD {消息参数} dw2: DWORD {消息参数} ): MMRESULT; {函数成功返回发送的消息} //举例: 阅读全文
posted @ 2008-02-22 22:24 万一 阅读(1625) 评论(0) 推荐(0)
摘要: //声明: midiOutMessage( hMidiOut: HMIDIOUT; {设备句柄} uMessage: UINT; {消息} dw1: DWORD {消息参数} dw2: DWORD {消息参数} ): MMRESULT; {函数成功返回发送的消息} //举例: 阅读全文
posted @ 2008-02-22 22:23 万一 阅读(1806) 评论(0) 推荐(0)
摘要: 提示: 在缓冲区给 midiOutLongMsg 之前, 先要调用 midiOutPrepareHeader 准备; 还要调用 GlobalAlloc 给 TMidiHdr 和其中 lpData 指向的缓冲区分配内存(使用 GMEM_MOVEABLE、GMEM_SHARE), 并用 GlobalLock 锁定. //声明: midiOutLongMsg( hMidiOut: HMIDIO... 阅读全文
posted @ 2008-02-22 22:18 万一 阅读(2127) 评论(2) 推荐(0)
摘要: 提示: 此函数可以发送系统专用消息以外的任何 MIDI 消息; 直到已经发送给输出设备才返回. //声明: midiOutShortMsg( hMidiOut: HMIDIOUT; {设备句柄} dwMsg: DWORD {MIDI 消息; 消息是 2 字节, 第一字节在低位} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSY... 阅读全文
posted @ 2008-02-22 22:07 万一 阅读(2313) 评论(0) 推荐(0)
摘要: //声明: midiOutGetDevCaps( uDeviceID: UINT; {设备 ID} lpCaps: PMidiOutCaps; {TMidiOutCaps 结构的指针} uSize: UINT {TMidiOutCaps 结构的大小} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_BAD... 阅读全文
posted @ 2008-02-22 21:56 万一 阅读(1759) 评论(0) 推荐(0)
摘要: //声明: midiInGetDevCaps( DeviceID: UINT; {设备 ID} lpCaps: PMidiInCaps; {TMidiInCaps 结构的指针} uSize: UINT {TMidiInCaps 结构的大小} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_BADDEVICE... 阅读全文
posted @ 2008-02-22 21:53 万一 阅读(1773) 评论(0) 推荐(0)
摘要: 提示: 函数将关闭通道上的所有标记, 放弃未处理的缓冲区并返回给程序; //声明: midiOutReset( hMidiOut: HMIDIOUT {设备句柄} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INVALHANDLE = 5; {设备句柄无效} //举例: 阅读全文
posted @ 2008-02-22 21:41 万一 阅读(1363) 评论(0) 推荐(0)
摘要: 提示: 函数成功后, 句柄不再有效; 如果已经发送给 midiOutLongMsg 函数的缓冲区没有返回给程序, 函数会失败; 调用 midiOutReset 可将所有挂起的缓冲区标记为已执行. //声明: midiOutClose( hMidiOut: HMIDIOUT {设备句柄} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INV... 阅读全文
posted @ 2008-02-22 21:35 万一 阅读(1348) 评论(0) 推荐(0)
摘要: 提示: 函数成功后, 句柄不再有效; 如果 midiInAddBuffer 发送的缓冲区没有返回到程序, 函数会失败; 调用 midiInReset 可将所有挂起的缓冲区标记为已执行. //声明: midiInClose( hMidiIn: HMIDIIN {设备句柄} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INVALHANDLE... 阅读全文
posted @ 2008-02-22 21:31 万一 阅读(1332) 评论(0) 推荐(0)
摘要: 提示: 函数会终止输入, 位置清 0; 放弃未处理的缓冲区并返回给程序; TWaveHdr 结构中的 dwBytesRecorded 将包含实际数据的长度. //声明: midiInReset( hMidiIn: HMIDIIN {设备句柄} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INVALHANDLE = 5; {设备句柄无效... 阅读全文
posted @ 2008-02-22 21:24 万一 阅读(1177) 评论(0) 推荐(0)
摘要: 提示: 函数会将当前缓冲区标记为已执行, 但会保留队列中任何空的缓冲区. //声明: midiInStop( hMidiIn: HMIDIIN {设备句柄} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INVALHANDLE = 5; {设备句柄无效} //举例: 阅读全文
posted @ 2008-02-22 21:12 万一 阅读(1285) 评论(0) 推荐(0)
摘要: 提示: 该函数会将时间标记清 0; 非系统专用消息会直接给用户; 系统专用消息放在由 midiInAddBuffer 函数提供的缓冲区中, 如果队列中没有缓冲区, 数据将被丢弃; 当缓冲区已满、或接收到一条完全的系统专用消息、或调用 midiInReset 时, 缓冲区返还给用户; TMidiHdr 的 dwBytesRecorded 中会返回实际接收到的数据长度. //声明: midiInS... 阅读全文
posted @ 2008-02-22 21:04 万一 阅读(1389) 评论(0) 推荐(0)
摘要: //声明: midiOutGetID( hMidiOut: HMIDIOUT; {获取输出设备句柄} lpuDeviceID: PUINT {接受 ID 的变量的指针} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INVALHANDLE = 5; {设备句柄无效} //举例: 阅读全文
posted @ 2008-02-22 18:26 万一 阅读(1294) 评论(0) 推荐(0)
摘要: //声明: midiInGetID( hMidiIn: HMIDIIN; {获取输入设备句柄} lpuDeviceID: PUINT {接受 ID 的变量的指针} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INVALHANDLE = 5; {设备句柄无效} //举例: 阅读全文
posted @ 2008-02-22 18:22 万一 阅读(1460) 评论(0) 推荐(0)
摘要: //声明: midiOutGetNumDevs: UINT; {无参数; 返回 MIDI 输出设备的数目} //举例: 阅读全文
posted @ 2008-02-22 18:15 万一 阅读(1889) 评论(0) 推荐(0)
摘要: //声明: midiInGetNumDevs: UINT; {无参数; 返回 MIDI 输入设备的数目} //举例: 阅读全文
posted @ 2008-02-22 18:14 万一 阅读(1544) 评论(0) 推荐(0)
摘要: 提示: 设备写满缓冲区返回给程序后, 须调用此函数; 释放(GlobalFree)缓冲区前, 须调用此函数; 取消一个尚未准备的缓冲区将无效, 但函数返回 0 //声明: midiOutUnprepareHeader( hMidiOut: HMIDIOUT; {设备句柄} lpMidiOutHdr: PMidiHdr; {TMidiHdr 结构指针} uSize: UI... 阅读全文
posted @ 2008-02-22 18:05 万一 阅读(1336) 评论(0) 推荐(0)