Adicionar formulários ao banco de dados de formulários
Importante
A plataforma de impressão moderna é o meio preferido do Windows para se comunicar com as impressoras. Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft juntamente com PSA (Aplicativos de Suporte à Impressão) para personalizar a experiência de impressão no Windows 10 e 11 para o desenvolvimento de dispositivos de impressora.
Para obter mais informações, consulte Plataformade impressão moderna e o Guia de design do aplicativo de suporte de impressão.
Se a impressora oferecer suporte a formulários adicionais, você poderá adicioná-los ao driver de impressora Unidrv descrevendo-os no arquivo GPD do driver da impressora. Se você usar uma ID de recurso com o campo *rcNameId e uma DLL de recurso para a cadeia de caracteres de nome de exibição do formulário, o driver usará automaticamente os novos recursos de aprimoramentos de localização fornecidos pelo driver de impressora Windows Vista Unidrv. Os plug-ins do driver de impressora Unidrv também se beneficiam dessas alterações no spooler automaticamente e não exigem nenhuma modificação adicional. Para obter mais informações sobre esses aprimoramentos, consulte Alterações em formulários de impressora no Windows Vista.
Se você não estiver usando uma DLL de recurso para as cadeias de caracteres localizáveis no arquivo GPD, deverá remover as cadeias de caracteres localizáveis, armazená-las em uma DLL de recurso e substituir as cadeias de caracteres pela ID de recurso correspondente no arquivo GPD.
O exemplo de código a seguir é um trecho de um arquivo GPD que usa uma ID de recurso para o nome de exibição.
*Feature: PaperSize
{
*Option: Option2
{
*rcNameID: 259
(form definition)
}
(other form definitions).
}
Dentro do driver de impressora Unidrv fornecido com o Windows Vista, a estrutura FORM_INFO_2 é preenchida por dados que são lidos do arquivo GPD, como mostra a tabela a seguir. Se o arquivo GPD da impressora já contiver as informações necessárias para preencher essa estrutura, você não precisará alterar nada para usar os novos recursos fornecidos pelo driver de impressora Unidrv do Windows Vista.
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 field | Valor GPD usado | Descrição do campo |
---|---|---|
Sinalizadores | FORM_PRINTER Esse valor é atribuído pelo driver de impressora Unidrv porque ele está adicionando o formulário. Um valor do arquivo GPD não é usado para esse campo. |
As propriedades da estrutura. |
pName | O nome localizado do formulário conforme obtido da DLL de recurso ou do campo *rcName no arquivo GPD. | Um ponteiro para uma cadeia de caracteres terminada em nulo que especifica o nome do formulário. Essa cadeia de caracteres é usada para identificar o formulário no banco de dados de formulários e deve ser exclusiva. |
Tamanho | Informações de tamanho que são lidas na opção *PageDimensions no arquivo GPD. | A largura e a altura, em milésimos de milímetros, da forma. |
ImageableArea | Informações de tamanho que são lidas na opção *PrintableArea no arquivo GPD. | A largura e a altura, em milésimos de milímetros, da área da página na qual a impressora pode imprimir. |
pKeyword | O valor da entrada *Option no arquivo GPD. | Um ponteiro para um identificador de cadeia de caracteres não localizável do formulário. Quando passado para AddForm ou SetForm, esse ponteiro fornece ao chamador uma maneira de identificar o formulário em todas as localidades. |
StringType | STRING_MUIDLL Se o GPD usar a opção *rcNameId e o nome do formulário estiver disponível na DLL do recurso, o valor STRING_MUIDLL será atribuído. Se a opção *rcName for usada no arquivo GPD, o valor desse campo será STRING_NONE. Um valor do arquivo GPD não é usado para esse campo. |
Especifica como um nome de exibição localizado para o formulário é obtido em tempo de execução. |
pMuiDll | O valor da entrada *ResourceDLL no arquivo GPD se a opção *rcNameId for usada. Se a opção *rcName for usada no arquivo GPD, o valor desse campo será NULL. | A DLL de recurso localizado do MUI que contém o nome de exibição localizado quando StringType contém STRING_MUIDLL. |
dwResourceId | O valor da entrada *rcNameID no arquivo GPD. Se a opção *rcName for usada no arquivo GPD, o valor desse campo será 0. | A ID do recurso, em pMuiDll, do nome de exibição do formulário quando StringType contém STRING_MUIDLL. |
pDisplayName | NULL Esse campo não é usado. |
O nome de exibição do formulário no idioma que wLangId especifica quando StringType contém STRING_LANGPAIR. |
wLangId | 0 Esse campo não é usado. |
O idioma de pDisplayName quando StringType contém STRING_LANGPAIR. |