midiOutCacheDrumPatches 函数 (mmeapi.h)

midiOutCacheDrumPatches 函数请求内部 MIDI 合成器设备预加载并缓存一组指定的基于键的打击补丁。

语法

MMRESULT midiOutCacheDrumPatches(
  HMIDIOUT hmo,
  UINT     uPatch,
  LPWORD   pwkya,
  UINT     fuCache
);

参数

hmo

打开的 MIDI 输出设备的句柄。 此设备应为内部 MIDI 合成器。 此参数也可以是 MIDI 流的句柄,强制转换为 HMIDIOUT

uPatch

应使用的鼓补丁编号。 此参数应设置为零以缓存默认鼓修补程序。

pwkya

指向 KEYARRAY 数组的指针,该数组指示要缓存或未缓存的指定打击音补丁的键号。

fuCache

缓存操作的选项。 它可以是以下标志之一。

含义
MIDI_CACHE_ALL 缓存所有指定的修补程序。 如果它们不能全部缓存,则不缓存任何内容,清除 KEYARRAY 数组,并返回MMSYSERR_NOMEM。
MIDI_CACHE_BESTFIT 缓存所有指定的修补程序。 如果它们不能全部缓存,它将缓存尽可能多的修补程序,更改 KEYARRAY 数组以反映缓存的修补程序,并返回MMSYSERR_NOMEM。
MIDI_CACHE_QUERY 更改 KEYARRAY 数组以指示当前缓存的修补程序。
MIDI_UNCACHE 取消缓存指定的修补程序并清除 KEYARRAY 数组。

返回值

如果成功,则返回MMSYSERR_NOERROR,否则返回错误。 可能的错误值包括以下内容。

返回代码 说明
MMSYSERR_INVALFLAG
wFlags 指定的标志无效。
MMSYSERR_INVALHANDLE
指定的设备句柄无效。
MMSYSERR_INVALPARAM
lpKeyArray 数组指向的数组无效。
MMSYSERR_NOMEM
设备没有足够的内存来缓存所有请求的修补程序。
MMSYSERR_NOTSUPPORTED
指定的设备不支持修补程序缓存。

注解

某些合成器无法同时加载所有打击声补丁。 缓存修补程序可确保指定的修补程序可用。

KEYARRAY 数组的每个元素都表示 128 个基于键的打击补丁之一,并为使用特定修补程序的 16 个 MIDI 通道中的每一个都设置了位。 最低有效位表示物理通道 0,最高有效位表示物理通道 15。 例如,如果物理通道 9 和 15 使用密钥编号 60 上的修补程序,则元素 60 将设置为0x8200。

此函数仅适用于内部 MIDI 合成器设备。 并非所有内部合成器都支持修补程序缓存。 若要查看设备是否支持修补程序缓存,请使用 MIDICAPS_CACHE 标志测试由 midiOutGetDevCaps 函数填充的 MIDIOUTCAPS 结构的 dwSupport 成员。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 mmeapi.h (包括 Windows.h)
Library Winmm.lib
DLL Winmm.dll

另请参阅

MIDI 函数