Поделиться через


функция DPA_Merge (dpa_dsa.h)

[DPA_Merge доступна в Windows XP с пакетом обновления 2 (SP2). В последующих версиях он может быть изменен или недоступен.]

Объединяет содержимое двух динамических массивов указателей .

Синтаксис

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, эти элементы объединяются в окончательный массив. Функция обратного вызова PFNDPAMERGE вызывается с сообщением DPAMM_MERGE.

Если этот флаг установлен, окончательный размер массива в hdpaDest совпадает с его первоначальным размером.

DPAM_UNION
0x00000004
Окончательный массив — это объединение всех элементов в обоих массивах. Элементы, найденные в обоих массивах, объединяются в окончательном массиве. Элементы, найденные только в одном массиве или в другом массиве, добавляются как найденные. Если этот флаг установлен, функцию обратного вызова PFNDPAMERGE можно вызвать с сообщением DPAMM_MERGE или DPAMM_INSERT.

Окончательный размер массива — это, по крайней мере, размер больше hdpaDest и hdpaSrc, а также не более суммы двух.

DPAM_INTERSECT
0x00000008
Для формирования окончательного массива объединяются только элементы, найденные в hdpaSrc и hdpaDest . Если этот флаг установлен, функцию обратного вызова PFNDPAMERGE можно вызвать с сообщением DPAMM_MERGE или DPAMM_DELETE.

Окончательный размер массива может варьироваться от 0 до меньшего значения hdpaDest и hdpaSrc.

[in] pfnCompare

Тип: PFNDPACOMPARE

Функция обратного вызова PFNDPACOMPARE , которая сравнивает два элемента, по одному из каждого DPA, чтобы определить, являются ли они одним и тем же элементом. Если это так, вызывается функция обратного вызова, на которую указывает pfnCompare .

[in] pfnMerge

Тип: PFNDPAMERGE

Функция обратного вызова PFNDPAMERGE , которая объединяет содержимое при обнаружении элемента в обоих DPA и обнаруженном PFNDPACOMPARE как один и тот же элемент.

[in] lParam

Тип: LPARAM

Дополнительный параметр, используемый для объявления основы сравнения, по которой определяется равенство.

Возвращаемое значение

Тип: BOOL

Значение TRUE в случае успешного выполнения; в противном случае — FALSE.

Комментарии

DPA_Merge не экспортируется по имени. Чтобы использовать его, необходимо использовать GetProcAddress и запросить порядковый номер 11 из ComCtl32.dll, чтобы получить указатель на функцию.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header dpa_dsa.h
DLL Comctl32.dll (версия 5.0 или более поздняя)