DPA_Merge 函数 (dpa_dsa.h)

[DPA_Merge 通过 Windows XP 和 Service Pack 2 (SP2) 提供。 它在后续版本中可能已更改或不可用。]

将两个动态指针数组的内容合并 (DPA) 。

语法

BOOL DPA_Merge(
  [in, out] HDPA         hdpaDest,
  [in]      HDPA         hdpaSrc,
  [in]      DWORD        dwFlags,
  [in]      PFNDACOMPARE pfnCompare,
  [in]      PFNDPAMERGE  pfnMerge,
  [in]      LPARAM       lParam
);

参数

[in, out] hdpaDest

类型: HDPA

第一个 DPA 的句柄。 可以选择预排序此数组。 当此函数返回时,包含合并数组的句柄。

[in] hdpaSrc

类型: HDPA

第二个 DPA 的句柄。 可以选择预排序此数组。

[in] dwFlags

类型: DWORD

用于确定用于合并两个数组的方法的选项。 DPAM_NORMAL、DPAM_UNION和DPAM_UNION是互斥的,只能设置其中一个标志,可以选择与DPAM_SORTED结合使用。

含义
DPAM_SORTED
0x00000001
数组是预先排序的;跳过排序。 如果未设置此标志,则会在合并数组之前对其进行排序。
DPAM_NORMAL
0x00000002
最终数组由 最初存在于 hdpaDest 中的所有元素组成。 如果在 hdpaSrc 中也找到了这些元素中的任何一个,则这些元素将合并到最终数组中。 使用DPAMM_MERGE消息调用 PFNDPAMERGE 回调函数。

设置此标志后, hdpaDest 处数组的最终大小与其初始大小相同。

DPAM_UNION
0x00000004
最后一个数组是两个数组中所有元素的并集。 在两个数组中找到的元素将合并到最终数组中。 仅在一个数组或另一个数组中找到的元素将添加为找到的元素。 设置此标志后,可以使用DPAMM_MERGE或DPAMM_INSERT消息调用 PFNDPAMERGE 回调函数。

数组的最终大小至少是 hdpaDesthdpaSrc 的较大大小,并且最多是两者的总和。

DPAM_INTERSECT
0x00000008
只有在 hdpaSrchdpaDest 中找到的元素才会合并以形成最终数组。 设置此标志后,可以使用DPAMM_MERGE或DPAMM_DELETE消息调用 PFNDPAMERGE 回调函数。

数组的最终大小范围为 0 和 hdpaDesthdpaSrc 的较小值。

[in] pfnCompare

类型: PFNDPACOMPARE

PFNDPACOMPARE 回调函数,用于比较两个元素(每个 DPA 中的一个元素),以确定它们是否为同一项。 如果是,则调用 pfnCompare 指向的回调函数。

[in] pfnMerge

类型: PFNDPAMERGE

PFNDPAMERGE 回调函数,当元素在两个 DPA 中找到并且由 PFNDPACOMPARE 发现为同一项时合并内容。

[in] lParam

类型: LPARAM

用于声明确定相等性的比较基础的其他参数。

返回值

类型: BOOL

如果成功,则为 TRUE;否则为 FALSE

注解

DPA_Merge 不按名称导出。 若要使用它,必须使用 GetProcAddress 并从 ComCtl32.dll 请求序号 11 来获取函数指针。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 dpa_dsa.h
DLL Comctl32.dll (5.0 或更高版本)