Добавление форм в базу данных форм
Внимание
Современная платформа печати — это предпочтительный способ взаимодействия с принтерами Windows. Рекомендуется использовать драйвер класса "Входящие" Microsoft IPP вместе с приложениями поддержки печати (PSA), чтобы настроить возможности печати в Windows 10 и 11 для разработки устройств принтера.
Дополнительные сведения см. в статье "Современная платформа печати" и руководство по проектированию приложений поддержки печати.
Если принтер поддерживает дополнительные формы, их можно добавить в драйвер принтера Unidrv, описывая их в файле GPD для драйвера принтера. Если вы используете идентификатор ресурса с полем *rcNameId и библиотекой DLL ресурсов для строки отображаемого имени формы, драйвер автоматически будет использовать новые возможности локализации, предоставляемые драйвером принтера Windows Vista Unidrv. Подключаемые модули драйвера принтера Unidrv также получают преимущества от этих изменений в spooler автоматически и не требуют дополнительных изменений. Дополнительные сведения об этих улучшениях см. в разделе "Изменения в формах принтера" в Windows Vista.
Если вы не используете библиотеку DLL ресурсов для локализуемых строк в файле GPD, удалите локализованные строки, сохраните их в библиотеке DLL ресурсов и замените строки соответствующим идентификатором ресурса в файле GPD.
Следующий пример кода — это фрагмент из GPD-файла, который использует идентификатор ресурса для отображаемого имени.
*Feature: PaperSize
{
*Option: Option2
{
*rcNameID: 259
(form definition)
}
(other form definitions).
}
В драйвере принтера Unidrv, предоставленном в Windows Vista, структура FORM_INFO_2 заполняется данными, считываемыми из файла GPD, как показано в следующей таблице. Если файл GPD для принтера уже содержит сведения, необходимые для заполнения этой структуры, вам не нужно ничего изменять, чтобы использовать новые функции, предоставляемые драйвером принтера Windows Vista Unidrv.
typedef struct _FORM_INFO_2 {
DWORD Flags;
LPTSTR pName;
SIZEL Size;
RECTL ImageableArea;
LPCSTR pKeyword;
DWORD StringType;
LPCTSTR pMuiDll;
DWORD dwResourceId;
LPCTSTR pDisplayName;
LANGID wLangId;
} FORM_INFO_2, *PFORM_INFO_2;
поле FORM_INFO_2 | Используемое значение GPD | Описание поля |
---|---|---|
Флаги | FORM_PRINTER Это значение назначается драйвером принтера Unidrv, так как он добавляет форму. Значение из файла GPD не используется для этого поля. |
Свойства структуры. |
pName | Локализованное имя формы, полученное из библиотеки DLL ресурсов или из поля *rcName в файле GPD. | Указатель на строку, завершающуюся значением NULL, которая указывает имя формы. Эта строка используется для идентификации формы в базе данных форм и должна быть уникальной. |
Размер | Сведения о размере, считываемые из параметра *PageDimensions в файле GPD. | Ширина и высота( в тысячах миллиметров) формы. |
ImageableArea | Сведения о размере, считываемые из параметра *PrintableArea в файле GPD. | Ширина и высота( в тысячах миллиметров) области страницы, на которой принтер может печатать. |
pKeyword | Значение записи *Option в файле GPD. | Указатель на не локализуемый идентификатор строки формы. При передаче в AddForm или SetForm этот указатель дает вызывающей стороне способ идентификации формы во всех языковых стандартах. |
StringType | STRING_MUIDLL Если GPD использует параметр *rcNameId и имя формы доступно из библиотеки DLL ресурса, то назначается значение STRING_MUIDLL. Если параметр *rcName используется в файле GPD, значение этого поля STRING_NONE. Значение из файла GPD не используется для этого поля. |
Указывает, как локализованное отображаемое имя формы получается во время выполнения. |
pMuiDll | Значение записи *ResourceDLL в файле GPD, если используется параметр *rcNameId. Если параметр *rcName используется в файле GPD, значение этого поля равно NULL. | Библиотека DLL локализованного ресурса MUI, содержащая локализованное отображаемое имя, если StringType содержит STRING_MUIDLL. |
dwResourceId | Значение записи *rcNameID в файле GPD. Если параметр *rcName используется в файле GPD, значение этого поля равно 0. | Идентификатор ресурса в pMuiDll отображаемого имени формы, если StringType содержит STRING_MUIDLL. |
pDisplayName | NULL Это поле не используется. |
Отображаемое имя формы на языке, который wLangId указывает, когда StringType содержит STRING_LANGPAIR. |
wLangId | 0 Это поле не используется. |
Язык pDisplayName , когда StringType содержит STRING_LANGPAIR. |