Partilhar via


FORM_INFO_2 Estrutura de Dados

O spooler de impressão e o driver de impressora Unidrv são aprimorados no Windows Vista para fornecer melhor suporte a formulários de impressora em ambientes multilíngües. O spooler suporta cadeias de caracteres MUI (Multi-language User Interface) 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 suportar as cadeias de caracteres MUI.

A estrutura de dados FORM_INFO_1 é definida da seguinte forma.

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

No 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 internas usam para localizar formulários no banco de dados interno e também como o nome para exibição que é 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 a 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 permitir a adição de uma palavra-chave distinta, que pode ser diferente do nome para exibição.

Essa estrutura também permite que você adicione 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 para exibição, a função AddForm no spooler procura o nome para exibição na DLL e o 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 ao qual pDisplayName faz referência e o ID de idioma correspondente em 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.