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


структура данных FORM_INFO_2

Средство проверки печати и драйвер принтера Unidrv улучшены в Windows Vista, чтобы обеспечить лучшую поддержку форм принтера в многоязычных средах. Spooler поддерживает строки многоязычного пользовательского интерфейса (MUI) для отображаемых имен форм и новой структуры данных FORM_INFO_2, чтобы включить дополнительные сведения, необходимые для поддержки строк MUI.

Структура данных FORM_INFO_1 определяется следующим образом.

typedef struct _FORM_INFO_1 { 
  DWORD  Flags; 
  LPTSTR  pName; 
  SIZEL   Size; 
  RECTL   ImageableArea; 
} FORM_INFO_1, *PFORM_INFO_1;

В FORM_INFO_1 элемент pName является единственным строковым полем, поэтому его можно использовать для создания имени ключа, используемого внутренними подпрограммами поиска для поиска форм во внутренней базе данных, а также отображаемого имени, отображаемого конечным пользователям.

Структура FORM_INFO_2, определенная в следующем примере кода, добавляет дополнительные поля для поддержки MUI.

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 добавляет элемент pKeyword для включения добавления отдельного ключевого слова, который может отличаться от отображаемого имени.

Эта структура также позволяет добавить библиотеку DLL ресурсов и идентификатор ресурса в базу данных форм с помощью элемента pMuiDll и dwResourceId. Если элемент StringType имеет значение STRING_MUIDLL, а элементы pMuiDll и dwResourceId содержат библиотеку ресурсов и идентификатор отображаемого имени, функция AddForm в spooler ищет отображаемое имя в библиотеке DLL и записывает его внутри. При вызове функции GetForm или EnumForms со значением уровня 2 сведения, возвращаемые в структуре FORM_INFO_2, будут содержать отображаемое имя, которое ссылается на pDisplayName и соответствующий идентификатор языка в wLangID.

Драйверы принтера, которые продолжают использовать структуру FORM_INFO_1 при вызове AddForm, будут хранить только сведения, найденные в этой структуре в базе данных форм. Элементы в структуре FORM_INFO_2, которые не найдены в структуре FORM_INFO_1, будут NULL или 0 при запросе вызова GetForm или EnumForms, возвращающего структуру FORM_INFO_2.

Дополнительные сведения о добавлении форм принтера и использовании структур данных FORM_INFO_1 и FORM_INFO_2 см. в документации по пакету SDK для Microsoft Windows.