Метод IPrintCoreHelper::SetOptions (prcomoem.h)

Метод IPrintCoreHelper::SetOptions задает несколько пар функций и вариантов одновременно.

Синтаксис

HRESULT SetOptions(
  [in, optional] IN PDEVMODE                      pDevmode,
  [in]           IN DWORD                         cbSize,
  [in]           IN BOOL                          bResolveConflicts,
  [in]           IN const PRINT_FEATURE_OPTION [] pFOPairs,
  [in]           IN DWORD                         cPairs,
  [out]          OUT PDWORD                       pcPairsWritten,
  [out]          OUT PDWORD                       pdwResult
);

Параметры

[in, optional] pDevmode

Указатель на структуру DEVMODEW . Если указан этот указатель, IPrintCoreHelper::SetOptions должен использовать структуру DEVMODEW, на которую указывает pDevmode , вместо структуры DEVMODEW по умолчанию или текущей. Если этот метод вызывается из поставщика подключаемого модуля или из IPrintOemPS::D evMode или IPrintOemUni::D evMode, этот параметр является обязательным. В большинстве других ситуаций параметр должен иметь значение NULL. Когда основной драйвер задает pDevmodeзначение NULL, он изменяет внутреннее состояние, а не внутреннее состояние переданной структуры DEVMODEW. Это необходимо во время таких операций, как полная замена пользовательского интерфейса, когда структура DEVMODEW, возвращаемая DDI, например DrvDocumentPropertySheets, обслуживается модулем пользовательского интерфейса основного драйвера.

[in] cbSize

Размер (в байтах) структуры DEVMODEW, на которую указывает параметр pDevmode .

[in] bResolveConflicts

Логическое значение, указывающее, должен ли IPrintCoreHelper::SetOptions разрешать конфликты, возникающие из-за одного или нескольких ограничений, указанных в представлении GPD или PPD файла конфигурации, а также ограничений для функциональных возможностей, реализованных Unidrv, Pscript или процессором печати. Если задано значение TRUE, этот метод должен попытаться устранить конфликт. Если значение FALSE, этот метод не должен пытаться разрешить конфликты. Дополнительные сведения см. в разделе «Примечания».

[in] pFOPairs

Массив элементов PRINT_FEATURE_OPTION , где каждый элемент содержит пару признаков и вариантов. В каждой паре "признак-параметр" перечисляются признаки и варианты, которые нужно выбрать для этой функции. Все параметры применяются последовательно. Дубликаты не запрещены, но параметры, которые отображаются позже в массиве (т. е. по более высокому индексу), переопределяют параметры, которые отображаются ранее в массиве.

[in] cPairs

Количество пар функций и параметров, на которые указывает параметр pFOPairs .

[out] pcPairsWritten

Указатель на переменную, получающую количество пар функций и вариантов, которые были успешно сохранены до возврата или сбоя IPrintCoreHelper::SetOptions . Если этот метод возвращает успешно, значение *pcPairsWritten будет иметь то же значение, что и cPairs. Если метод завершается сбоем,*pcPairsWritten может иметь любое значение от нуля до значения cPairs. Этот параметр является необязательным и может иметь значение NULL.

[out] pdwResult

Указатель на переменную, получающую состояние разрешения конфликта. Состояние может быть одним из следующих значений.

Значение Описание
SETOPTIONS_RESULT_NO_CONFLICT По отношению к новому параметру не было нарушено никаких ограничений, указанных в представлении GPD или PPD файла конфигурации.
SETOPTIONS_RESULT_CONFLICT_RESOLVED По крайней мере одно ограничение, указанное в представлении GPD или PPD файла конфигурации, было нарушено, и вызывающий объект запросил, чтобы метод разрешал конфликты. Это значение приводит к изменению параметров с разрешением конфликтов.
SETOPTIONS_RESULT_CONFLICT_NOT_RESOLVED По крайней мере одно ограничение, указанное в представлении GPD или PPD файла конфигурации, было нарушено, и вызывающий объект запросил, чтобы метод не разрешал конфликты. Параметры не изменяются, а конфликты сохраняются.

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

IPrintCoreHelper::SetOptions должен возвращать одно из следующих значений.

Код возврата Описание
S_OK Операция успешно выполнена.
E_INVALIDARG Один или несколько аргументов недопустимы или функция не поддерживается.
E_OUTOFMEMORY Не удалось выделить память для результирующих массивов.

Для других сбоев метод должен возвращать стандартный код ошибки COM.

Комментарии

IPrintCoreHelper::SetOptions можно использовать для одновременного изменения нескольких параметров и устранения ограничений после установки всех выбранных параметров. Изменения параметров применяются последовательно, начиная с начала массива pFOPairs , поэтому если один и тот же компонент отображается дважды в этом массиве, будет выбран только последний параметр для этой функции. Изменения параметров не фиксируются (то есть сохраняются в реестре), если только параметр bResolveConflicts не имеет значение TRUE.

В большинстве сценариев параметру bResolveConflicts следует задать значение TRUE. Присвойте этому параметру значение FALSE , если вы хотите предложить пользователю разрешить конфликты.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть prcomoem.h (включая Prcomoem.h)

См. также раздел

IPrintCoreHelper

IPrintCoreHelper::GetOption