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


Функция PTConvertPrintTicketToDevMode (prntvpt.h)

Преобразует билет печати в структуру DEVMODE .

Синтаксис

HRESULT PTConvertPrintTicketToDevMode(
  [in]  HPTPROVIDER         hProvider,
  [in]  IStream             *pPrintTicket,
        EDefaultDevmodeType baseDevmodeType,
  [in]  EPrintTicketScope   scope,
  [out] ULONG               *pcbDevmode,
  [out] PDEVMODE            *ppDevmode,
  [out] BSTR                *pbstrErrorMessage
);

Параметры

[in] hProvider

Дескриптор для открытого поставщика билетов на печать. Этот дескриптор возвращается функцией PTOpenProvider или PTOpenProviderEx .

[in] pPrintTicket

Указатель на IStream с позицией поиска в начале печатного билета.

baseDevmodeType

Значение , указывающее, используется ли DEVMODE пользователя по умолчанию или DEVMODE очереди печати по умолчанию для предоставления значений в выходные данные DEVMODE , если pPrintTicket не указывает все возможные параметры для DEVMODE.

[in] scope

Значение типа , указывающее область pPrintTicket. Это значение может указывать одну страницу, весь документ или все документы в задании печати. Параметры в pPrintTicket, которые находятся за пределами указанного область, игнорируются. См. заметки.

[out] pcbDevmode

Указатель на размер DEVMODE в байтах.

[out] ppDevmode

Указатель на только что созданный DEVMODE.

[out] pbstrErrorMessage

Указатель на строку, указывающую, что является недопустимым в pPrintTicket. Если это допустимо, это значение РАВНО NULL.

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

Если операция выполнена успешно, возвращаемое значение будет S_OK.

Если hProvider был открыт в другом потоке, HRESULT E_INVALIDARG.

Если pPrintTicket недопустим, HRESULT E_PRINTTICKET_FORMAT.

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

Комментарии

Примечание Это блокирующая или синхронная функция, возвращаемая не сразу. Скорость возврата этой функции зависит от факторов времени выполнения, таких как состояние сети, конфигурация сервера печати и реализация драйвера принтера, которые трудно предсказать при написании приложения. Вызов этой функции из потока, который управляет взаимодействием с пользовательским интерфейсом, может привести к тому, что приложение не отвечает.
 
Параметр hProvider должен быть дескриптором, который был открыт в том же потоке, что и поток, в котором он используется для этой функции.

Если baseDevmodeType имеет значение kUserDefaultDevmode, но значение по умолчанию пользователя недоступно, будет использоваться значение по умолчанию для устройства.

Возвращаемый DEVMODE может быть внутренне несогласованным или конфликтовать с параметрами жесткого принтера, даже если каждый параметр в нем является жизнеспособным по отдельности. Например, если принтер поддерживает необязательный дуплексер, но pPrintTicket вызывает дуплексирование, возвращенный DEVMODE также будет вызывать дуплексирование, даже если дуплексер не установлен. Используйте DocumentProperties , чтобы исправить возвращенный DEVMODE.

Буфер в возвращенном ppDevmode должен быть освобожден с помощью PTReleaseMemory.

Значения pPrintTicket, которые находятся за пределами область, игнорируются. Например, если область является только одной страницей, то параметры для всего задания и параметры на уровне документа игнорируются. Область задания включают область документов и область страниц. Область документа включает область страниц.

Если функция pbstrErrorMessage не имеет значение NULL , вызывающий объект должен освободить строку с помощью SysFreeString.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header prntvpt.h
Библиотека Prntvpt.lib
DLL Prntvpt.dll

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

Схема печати

Функции API очереди печати принтера

Вывод на печать