структура данных 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.