Referenciando localidades
Importante
A plataforma de impressão moderna é o meio preferencial 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.
Usando arquivos GPD
Os arquivos GPD podem fazer referência à localidade de um sistema. Normalmente, os identificadores de localidade são usados em instruções *Switch, em que parâmetros como tamanhos de papel padrão e DLLs de recursos podem ser especificados de maneira específica da localidade.
Para fazer referência a informações de localidade, o arquivo GPD deve conter uma instrução *Include que inclui o arquivo locale.gpd, que está incluído no WDK (Windows Driver Kit), da seguinte maneira:
*Include: locale.gpd
Esse arquivo GPD define um recurso chamado "Localidade" e define opções para muitas localidades. (Consulte o arquivo para ver quais localidades estão definidas.) Veja a seguir um exemplo de uso dessas opções de localidade. O exemplo baseia o tamanho do papel padrão na localidade.
*Feature: PaperSize
{
...
Option: A4
{
}
...
*switch: Locale
{
*case: English_United_States
{
*DefaultOption: Letter
}
*case: English_United_Kingdom
{
*DefaultOption: A4
}
*default:
{
*DefaultOption: Letter
}
} *% End of switch
} *% End of Feature: PaperSize
Em tempo de execução, o Unidrv determina a localidade padrão do sistema chamando GetSystemDefaultLCID. Quando uma impressora é instalada, o analisador GPD lê o arquivo GPD da impressora e usa as informações dentro da instrução *Case associada à localidade padrão. Observe que, se a localidade do sistema for alterada após a instalação da impressora, as opções baseadas em localidade não serão alteradas.
Aqui está outro exemplo, que seleciona uma DLL de recurso com base na localidade. A DLL de recurso pode conter recursos específicos da localidade, como cadeias de caracteres de exibição.
*switch: Locale
{
*case: English_United_States
{
*ResourceDLL: english.dll
}
*case: German_Standard
{
*ResourceDLL: german.dll
}
*default:
{
*ResourceDLL: english.dll
}
}
Configurando o tamanho do papel padrão por localidade
Talvez você queira que seu motorista atribua o tamanho de papel padrão, métrico ou não métrico, com base na localização geográfica do usuário.
O algoritmo a seguir recupera a localidade padrão do sistema e, em seguida, usa códigos de país/região para determinar se a localidade do sistema representa um país que normalmente usa tamanhos de papel métricos ou não métricos. Com essas informações, o motorista pode definir o tamanho de papel padrão adequadamente, como A4 para países que usam o sistema métrico e tamanho Carta para países que não usam.
Use a função GetLocaleInfo para recuperar a localidade padrão do sistema. Use LOCALE_SYSTEM_DEFAULT para o primeiro parâmetro, Locale, e LOCALE_ICOUNTRY para o segundo parâmetro, LCType.
Use a localidade padrão do sistema obtida de GetLocaleInfo para determinar o tamanho do papel métrico ou não métrico.
Não métrico se a localidade padrão do sistema for:
CTRY_UNITED_STATES, ou
CTRY_CANADA, ou
Maior ou igual a 50, mas menor que 60 e não CTRY_BRAZIL, ou
Maior ou igual a 500, mas menor que 600
Métrica caso contrário.