摘要:
转贴自: http://dn.codegear.com/cn/article/34323 阅读全文
posted @ 2008-02-20 22:42
万一
阅读(5613)
评论(0)
推荐(0)
摘要:
提示: 把数据缓冲区传给 waveOutWrite 之前, 必须使用 waveOutPrepareHeader 准备该缓冲区; 若未调用 waveOutPause 函数暂停设备, 则第一次把数据块发送给设备时即开始播放. //声明: waveOutWrite( hWaveOut: HWAVEOUT; {设备句柄} lpWaveOutHdr: PWaveHdr; {TWaveH... 阅读全文
posted @ 2008-02-20 22:20
万一
阅读(5616)
评论(3)
推荐(0)
摘要:
提示: 设备使用完数据块后, 须调用此函数; 释放(GlobalFree)缓冲区前, 须调用此函数; 取消一个尚未准备的缓冲区将无效, 但函数返回 0 //声明: waveOutUnprepareHeader( hWaveOut: HWAVEOUT; {设备句柄} lpWaveOutHdr: PWaveHdr; {TWaveHdr 结构的指针} uSize: UINT ... 阅读全文
posted @ 2008-02-20 22:07
万一
阅读(6612)
评论(0)
推荐(0)
摘要:
提示: 参数 dwRate 虽然是 4 字节的正整数, 但表示的是个小数; 两个高位表示整数部分, 两个低位表示小数部分; $8000 表示一半, $4000 表示四分之一; 譬如: $00010000 表示 1.0, 说明速度没有改变变; $000F8000, 表示 15.5 倍; 修改播放速度不会改变采样速度, 但肯定会改变播放时间. //声明: waveOutSetPlaybackRa... 阅读全文
posted @ 2008-02-20 21:53
万一
阅读(2194)
评论(0)
推荐(0)
摘要:
提示: 参数 dwPitch 虽然是 4 字节的正整数, 但表示的是个小数; 两个高位表示整数部分, 两个低位表示小数部分; $8000 表示一半, $4000 表示四分之一; 譬如: $00010000 表示 1.0, 说明音高没变; $000F8000, 表示 15.5 倍; 修改音高不会改变播放速度、采样速度和播放时间, 但不是所有设备都支持. //声明: waveOutSetPitc... 阅读全文
posted @ 2008-02-20 21:50
万一
阅读(2012)
评论(0)
推荐(0)
摘要:
提示: 当输出设备未暂停时调用该函数无效, 但也返回 0 //声明: waveOutRestart( hWaveOut: HWAVEOUT {设备句柄} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INVALHANDLE = 5; {设备句柄无效} MMSYSERR_HANDLEBUSY = 12; {设备已被另一线程使用} ... 阅读全文
posted @ 2008-02-20 21:46
万一
阅读(2080)
评论(0)
推荐(0)
摘要:
提示: 函数会终止输入, 位置清0; 放弃未处理的缓冲区并返回给程序. //声明: waveOutReset( hWaveOut: HWAVEOUT {设备句柄} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INVALHANDLE = 5; {设备句柄无效} MMSYSERR_HANDLEBUSY = 12; {设备已被另一线程... 阅读全文
posted @ 2008-02-20 21:40
万一
阅读(2130)
评论(0)
推荐(0)
摘要:
提示: 必须调用 GlobalAlloc 给 TWaveHdr 和其中的 lpData 指向的缓冲区分配内存(使用 GMEM_MOVEABLE、GMEM_SHARE), 并用 GlobalLock 锁定. //声明: waveOutPrepareHeader( hWaveOut: HWAVEOUT; {设备句柄} lpWaveOutHdr: PWaveHdr; {TWaveH... 阅读全文
posted @ 2008-02-20 21:35
万一
阅读(6876)
评论(0)
推荐(0)
摘要:
提示: 暂停后会保存当前位置, 可以用 waveOutRestart 从当前位置恢复播放. //声明: waveOutPause( hWaveOut: HWAVEOUT {设备句柄} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INVALHANDLE = 5; {设备句柄无效} MMSYSERR_HANDLEBUSY = 12... 阅读全文
posted @ 2008-02-20 21:29
万一
阅读(2298)
评论(0)
推荐(0)
摘要:
提示: 因为其中的回调函数是在中断时间内访问的, 必须在 DLL 中; 要访问的数据都必须是在固定的数据段中; 除了PostMessagetimeGetSystemTimetimeGetTimetimeSetEventtimeKillEventmidiOutShortMsgmidiOutLongMsgOutputDebugString 外, 也不能有其他系统调用.//声明:waveOutOpen(... 阅读全文
posted @ 2008-02-20 21:24
万一
阅读(7560)
评论(8)
推荐(0)
摘要:
//声明: waveOutMessage( hWaveOut: HWAVEOUT; {设备句柄} uMessage: UINT; {消息} dw1: DWORD {消息参数} dw2: DWORD {消息参数} ): Longint; {将由设备给返回值} //举例: 阅读全文
posted @ 2008-02-20 21:09
万一
阅读(3087)
评论(0)
推荐(0)
摘要:
提示: 参数 lpdwVolume 的两低位字节存放左声道音量, 两高位字节存放右声道音量; $FFFF、$0000 分别表示最大与最小音量; 如不支持立体声, 两低位字节存放单声道音量. //声明: waveOutGetVolume( hwo: HWAVEOUT; {设备句柄} lpdwVolume: PDWORD {存放音量值的变量的指针} ): MMRESULT; ... 阅读全文
posted @ 2008-02-20 21:03
万一
阅读(4808)
评论(0)
推荐(0)
摘要:
//声明: waveOutGetPosition( hWaveOut: HWAVEOUT; {设备句柄} lpInfo: PMMTime; {TMMTime 结构的指针, 用于返回播放位置} uSize: UINT {TMMTime 结构的大小, 以字节为单位} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSER... 阅读全文
posted @ 2008-02-20 20:50
万一
阅读(2755)
评论(0)
推荐(0)
摘要:
提示: 参数 lpdwRate 虽然指向的是 4 字节的正整数, 但表示的是个小数; 两个高位表示整数部分, 两个低位表示小数部分; $8000 表示一半, $4000 表示四分之一; 譬如: $00010000 表示 1.0, 说明速度没有改变变; $000F8000, 表示 15.5 倍; 修改播放速度不会改变采样速度, 但肯定会改变播放时间. //声明: waveOutGetPlayb... 阅读全文
posted @ 2008-02-20 20:41
万一
阅读(1629)
评论(0)
推荐(0)
摘要:
提示: 参数 lpdwPitch 虽然指向的是 4 字节的正整数, 但表示的是个小数; 两个高位表示整数部分, 两个低位表示小数部分; $8000 表示一半, $4000 表示四分之一; 譬如: $00010000 表示 1.0, 说明音高没变; $000F8000, 表示 15.5 倍; 修改音高不会改变播放速度、采样速度和播放时间, 但不是所有设备都支持. //声明: waveOutGe... 阅读全文
posted @ 2008-02-20 19:41
万一
阅读(2144)
评论(0)
推荐(0)
摘要:
//声明: waveOutGetNumDevs: UINT; {无参数; 返回波形输出设备的数目} //举例: 阅读全文
posted @ 2008-02-20 19:22
万一
阅读(2327)
评论(0)
推荐(0)
摘要:
//声明: waveOutGetID( hWaveOut: HWAVEOUT; {设备句柄} lpuDeviceID: PUINT {接受 ID 的变量的指针} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INVALHANDLE = 5; {设备句柄无效} MMSYSERR_HANDLEBUSY = 12; {设备已被另一... 阅读全文
posted @ 2008-02-20 19:20
万一
阅读(2154)
评论(0)
推荐(0)
摘要:
提示: 错误文本的长度一般不超过 MAXERRORLENGTH = 128; 如果缓冲区太小, 文本会被截断. //声明: waveOutGetErrorText( mmrError: MMRESULT; {错误号} lpText: PChar; {缓冲区} uSize: UINT {缓冲区大小} ): MMRESULT; {成功返回 ... 阅读全文
posted @ 2008-02-20 19:15
万一
阅读(945)
评论(0)
推荐(0)
摘要:
//声明: waveOutGetDevCaps( uDeviceID: UINT; {输出设备ID} lpCaps: PWaveOutCaps; {TWaveOutCaps 结构的指针, 用于接受设备信息} uSize: UINT): MMRESULT; {TWaveOutCaps 结构大小} ): MMRESULT; {成功返回 0; 可... 阅读全文
posted @ 2008-02-20 19:07
万一
阅读(3803)
评论(0)
推荐(0)
摘要:
提示: 若正在播放, 应先调用 waveOutReset 终止播放, 然后再关闭, 不然会失败. //声明: waveOutClose( hWaveOut: HWAVEOUT {设备句柄} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INVALHANDLE = 5; {设备句柄无效} MMSYSERR_HANDLEBUSY = ... 阅读全文
posted @ 2008-02-20 18:41
万一
阅读(3091)
评论(7)
推荐(0)
摘要:
提示: 循环是由 saveOutWrite 传递的 TWaveHdr 结构的 dwLoop 和 dwFlags 控制的; dwFlags 的 WHDR_BEGINLOOP、WHDR_ENDLOOP 标识循环的开始和结束数据块; 在同一数据块上循环, 应同时指定这两个标志; 循环次数 dwLoops 应该在开始块上指定; 循环终止前, 组成循环体的块一定要播放完; 当无播放内容或循环设定失败时,... 阅读全文
posted @ 2008-02-20 18:35
万一
阅读(2549)
评论(0)
推荐(0)
摘要:
提示: 设备写满缓冲区返回给程序后, 须调用此函数; 释放(GlobalFree)缓冲区前, 须调用此函数; 取消一个尚未准备的缓冲区将无效, 但函数返回 0 //声明: waveInUnprepareHeader( hWaveIn: HWAVEIN; {设备句柄} lpWaveInHdr: PWaveHdr; {TWaveHdr 结构的指针} uSize: UINT ... 阅读全文
posted @ 2008-02-20 17:42
万一
阅读(5747)
评论(0)
推荐(0)
摘要:
提示: 如果未启动则调用无效, 但也返回 0; 缓冲区会被返回, TWaveHdr 结构中的 dwBytesRecorded 将包含返回的实际数据的长度. //声明: waveInStop( hWaveIn: HWAVEIN {设备句柄} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INVALHANDLE = 5; {设备句柄无效}... 阅读全文
posted @ 2008-02-20 17:27
万一
阅读(2657)
评论(0)
推荐(0)
摘要:
//声明: waveInStart( hWaveIn: HWAVEIN {设备句柄} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INVALHANDLE = 5; {设备句柄无效} MMSYSERR_HANDLEBUSY = 12; {设备已被另一线程使用} //举例: 阅读全文
posted @ 2008-02-20 17:22
万一
阅读(3186)
评论(0)
推荐(0)
摘要:
提示: 函数会终止输入, 位置清0; 放弃未处理的缓冲区并返回给程序; TWaveHdr 结构中的 dwBytesRecorded 将包含实际数据的长度. //声明: waveInReset( hWaveIn: HWAVEIN {设备句柄} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INVALHANDLE = 5; {设备句柄无效}... 阅读全文
posted @ 2008-02-20 16:49
万一
阅读(2950)
评论(0)
推荐(0)
摘要:
提示: 必须调用 GlobalAlloc 给 TWaveHdr 和其中的 lpData 指向的缓冲区分配内存(使用 GMEM_MOVEABLE、GMEM_SHARE), 并用 GlobalLock 锁定. //声明: waveInPrepareHeader( hWaveIn: HWAVEIN; {设备句柄} lpWaveInHdr: PWaveHdr; {TWaveHdr ... 阅读全文
posted @ 2008-02-20 16:38
万一
阅读(4107)
评论(0)
推荐(0)
摘要:
提示: 因为其中的回调函数是在中断时间内访问的, 必须在 DLL 中; 要访问的数据都必须是在固定的数据段中; 除了 PostMessage timeGetSystemTime timeGetTime timeSetEvent timeKillEvent midiOutShortMsg midiOutLongMsg OutputDebugString 外, 也不能有其他系统调用. //声明: ... 阅读全文
posted @ 2008-02-20 16:04
万一
阅读(13805)
评论(3)
推荐(0)
摘要:
//声明: waveInMessage( hWaveIn: HWAVEIN; {设备句柄} uMessage: UINT; {消息} dw1: DWORD {消息参数} dw2: DWORD {消息参数} ): MMRESULT; {将由设备给返回值} //举例: 阅读全文
posted @ 2008-02-20 13:39
万一
阅读(2164)
评论(0)
推荐(0)
摘要:
//声明: waveInGetPosition( hWaveIn: HWAVEIN; {设备句柄} lpInfo: PMMTime; {TMMTime 结构的指针} uSize: UINT {TMMTime 结构大小} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INVALHANDLE = 5; {设备句柄无效}... 阅读全文
posted @ 2008-02-20 13:26
万一
阅读(2744)
评论(0)
推荐(0)
摘要:
//声明: waveInGetNumDevs: UINT; {无参数; 返回波形输入设备的数目} //举例: 阅读全文
posted @ 2008-02-20 12:44
万一
阅读(2634)
评论(0)
推荐(0)
摘要:
//声明: waveInGetID( hWaveIn: HWAVEIN; {获取输入设备句柄} lpuDeviceID: PUINT {接受 ID 的变量的指针} ): MMRESULT; {成功返回 0; 可能的错误值见下:} MMSYSERR_INVALHANDLE = 5; {设备句柄无效} MMSYSERR_HANDLEBUSY = 12; {设备已被另一... 阅读全文
posted @ 2008-02-20 12:12
万一
阅读(2223)
评论(0)
推荐(0)
摘要:
动画剧本: 添加控件后用 F11 激活 Object Inspector 窗口; 可用 ↑ ↓ 选择属性; 用 Tab 切换属性名和属性值; 用 Tab 切换到属性名后, 键入属性名的部分字母, 可迅速定位; 用 Tab 切换到属性值后, 也可以键入字母选择, 而后回车确认. Ctrl+↓ 可以选择其他控件; 整个过程可以做到无鼠标操作. 阅读全文
posted @ 2008-02-20 10:38
万一
阅读(4631)
评论(1)
推荐(0)
摘要:
提示: 错误文本的长度一般不超过 MAXERRORLENGTH = 128; 如果缓冲区太小, 文本会被截断. //声明: waveInGetErrorText( mmrError: MMRESULT; {错误号} lpText: PChar; {缓冲区} uSize: UINT {缓冲区大小} ): MMRESULT; {成功返回 0;... 阅读全文
posted @ 2008-02-20 00:16
万一
阅读(1223)
评论(0)
推荐(0)
摘要:
//声明: waveInGetDevCaps( hwo: HWAVEOUT; {输入设备ID; HWAVEIN ?} lpCaps: PWaveInCaps; {TWaveInCaps 结构的指针, 用于接受设备信息} uSize: UINT {TWaveInCaps 结构大小} ): MMRESULT; {成功返回 0; 可能的错误... 阅读全文
posted @ 2008-02-20 00:03
万一
阅读(5186)
评论(0)
推荐(0)
浙公网安备 33010602011771号