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


Добавление форм в базу данных форм

Внимание

Современная платформа печати — это предпочтительный способ взаимодействия с принтерами 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.