IABContainer::CopyEntries
Область применения: Outlook 2013 | Outlook 2016
Копирует одну или несколько записей, обычно обмен сообщениями с пользователями или списками рассылки.
HRESULT CopyEntries(
LPENTRYLIST lpEntries,
ULONG_PTR ulUIParam,
LPMAPIPROGRESS lpProgress,
ULONG ulFlags
);
Параметры
lpEntries
[в] Указатель на массив структур ENTRYLIST , содержащий идентификаторы записей для копирования.
ulUIParam
[в] Дескриптор родительского окна всех диалоговых окон или окон, отображаемых этим методом. Параметр ulUIParam должен быть равен нулю, если флаг AB_NO_DIALOG задан в параметре ulFlags .
lpProgress
[в] Указатель на объект хода выполнения, отображающий индикатор хода выполнения или ЗНАЧЕНИЕ NULL. Если lpProgress имеет значение NULL, индикатор хода выполнения должен отображаться с помощью объекта progress, предоставленного MAPI с помощью метода IMAPISupport::D oProgressDialog . Параметр lpProgress игнорируется, если флаг AB_NO_DIALOG установлен в ulFlags.
ulFlags
[в] Битовая маска флагов, управляющая выполнением операции копирования. Можно задать следующие флаги:
AB_NO_DIALOG
Подавляет отображение индикатора хода выполнения. Если этот флаг не задан, отображается индикатор хода выполнения.
CREATE_CHECK_DUP_LOOSE
Указывает, что должен быть выполнен свободный уровень проверки повторяющихся записей. Реализация свободной проверки повторяющихся записей зависит от поставщика. Например, поставщик может определить свободное совпадение как любые две записи с одинаковым отображаемым именем.
CREATE_CHECK_DUP_STRICT
Указывает, что должен быть выполнен строгий уровень проверки повторяющихся записей. Реализация строгой проверки повторяющихся записей зависит от поставщика. Например, поставщик может определить строгое совпадение как любые две записи с одинаковым отображаемым именем и адресом для сообщений.
CREATE_REPLACE
Указывает, что новая запись должна заменить существующую, если установлено, что они дублируются.
Возвращаемое значение
S_OK
Операция копирования выполнена успешно.
MAPI_W_PARTIAL_COMPLETION
Операция копирования в целом выполнена успешно, но не удалось скопировать одну или несколько записей. При возврате этого значения вызов должен быть обработан как успешный. Чтобы проверить это значение, используйте макрос HR_FAILED . Дополнительные сведения см. в разделе Использование макросов для обработки ошибок.
Замечания
Метод IABContainer::CopyEntries копирует записи из того же или другого контейнера. Вызов CopyEntries функционально эквивалентен выполнению следующих вызовов для каждой записи для копирования:
Метод IABContainer::CreateEntry для создания новой записи.
Метод IMAPIProp::GetProps для чтения свойств из копируемых записей.
Метод IMAPIProp::SetProps для записи свойств в новую запись.
Метод IMAPIProp::SaveChanges новой записи для выполнения сохранения.
Метод IUnknown::Release новой записи для освобождения ссылки на контейнер.
Примечания для исполнителей
Все контейнеры, поддерживающие метод IABContainer::CopyEntries , должны быть изменяемыми. Задайте флаг AB_MODIFIABLE контейнера в его свойстве PR_CONTAINER_FLAGS (PidTagContainerFlags), чтобы указать, что он может изменяться.
Необходимо поддерживать все флаги; однако интерпретация и использование этих флагов зависит от реализации, то есть вы можете определить, что означает семантика CREATE_CHECK_DUP_LOOSE и CREATE_CHECK_DUP_STRICT флагов в контексте реализации. Если вы не можете определить, является ли запись дубликатом, всегда разрешайте копирование записи.
Если флаг CREATE_REPLACE установлен, всегда копируйте запись независимо от того, задано ли CREATE_CHECK_DUP_LOOSE или CREATE_CHECK_DUP_STRICT и является ли запись дублирующей.
Если CREATE_REPLACE не задано и CREATE_CHECK_DUP_STRICT задано, проверка для дубликатов. Если запись определена как дубликат, не копируйте запись.
Поддержка CREATE_REPLACE не требуется; отсутствие поддержки CREATE_REPLACE означает, что вы можете спокойно игнорировать его и всегда выполнять копирование.
Возвращайте предупреждение MAPI_W_PARTIAL_COMPLETION только в том случае, если не удается скопировать неуплицированную запись.
Примечания для вызывающих методов
Используйте флаги CREATE_CHECK_DUP_LOOSE и CREATE_CHECK_DUP_STRICT, чтобы указать поставщику, как контейнер будет выполнять проверку повторяющихся записей. Если необходимо добавить запись независимо от того, является ли она дубликатом, не устанавливайте ни один из этих флагов, либо устанавливайте флаг CREATE_REPLACE. CREATE_REPLACE указывает, что вам не важно, является ли запись дубликатом; вы всегда хотите, чтобы он заменял исходную запись.