estrutura de dados FORM_INFO_2
O spooler de impressão e o driver de impressora Unidrv são aprimorados no Windows Vista para oferecer melhor suporte a formulários de impressora em ambientes de vários idiomas. O spooler dá suporte a cadeias de caracteres MUI (Interface do Usuário de Vários Idiomas) para os nomes de exibição do formulário e a nova estrutura de dados FORM_INFO_2 para incluir as informações adicionais necessárias para dar suporte às cadeias de caracteres MUI.
A estrutura de dados FORM_INFO_1 é definida da seguinte maneira.
typedef struct _FORM_INFO_1 {
DWORD Flags;
LPTSTR pName;
SIZEL Size;
RECTL ImageableArea;
} FORM_INFO_1, *PFORM_INFO_1;
Em FORM_INFO_1, o membro pName é o único campo de cadeia de caracteres, portanto, você pode usá-lo para criar o nome da chave que as rotinas de pesquisa interna usam para localizar formulários no banco de dados interno e também como o nome de exibição mostrado aos usuários finais.
A estrutura FORM_INFO_2, que é definida no exemplo de código a seguir, adiciona campos adicionais para fornecer suporte à 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 adiciona o membro pKeyword para habilitar a adição de um palavra-chave distinto, que pode ser diferente do nome de exibição.
Essa estrutura também permite adicionar a DLL do recurso e a ID do recurso ao banco de dados de formulários usando o membro pMuiDll e dwResourceId. Quando o membro StringType tem o valor de STRING_MUIDLL e os membros pMuiDll e dwResourceId contêm a DLL do recurso e o identificador do nome de exibição, a função AddForm no spooler procura o nome de exibição na DLL e a registra internamente. Quando a função GetForm ou EnumForms é chamada com um valor level de 2, as informações retornadas na estrutura FORM_INFO_2 conterão o nome de exibição que pDisplayName referencia e a ID de idioma correspondente no wLangID.
Os drivers de impressora que continuam a usar a estrutura FORM_INFO_1 quando chamam AddForm armazenarão apenas as informações encontradas nessa estrutura no banco de dados de formulários. Os membros na estrutura FORM_INFO_2 que não são encontrados na estrutura FORM_INFO_1 serão NULL ou 0 quando consultados por uma chamada para GetForm ou EnumForms que retorna uma estrutura FORM_INFO_2.
Para obter mais informações sobre como adicionar formulários de impressora e sobre como usar as estruturas de dados FORM_INFO_1 e FORM_INFO_2, consulte a documentação do SDK do Microsoft Windows.