引用区域设置

重要

新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) 来自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。

有关详细信息,请参阅新式打印平台打印支持应用设计指南

使用 GPD 文件

GPD 文件可以引用系统的区域设置。 通常,在 *Switch 语句中使用区域设置标识符,其中可以以特定于区域设置的方式指定默认纸张大小和资源 DLL 等参数。

若要引用区域设置信息,GPD 文件必须包含一个 *Include 语句,该语句包含 Windows 驱动程序工具包 (WDK) 中包含的文件 locale.gpd,如下所示:

*Include: locale.gpd

此 GPD 文件定义名为“Locale”的功能,并定义许多区域设置的选项。 (请参阅该文件,以查看定义了哪些区域设置。)下面是这些区域设置选项的示例用法。 该示例将默认纸张大小基于区域设置。

*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

在运行时,Unidrv 通过调用 GetSystemDefaultLCID 来确定系统的默认区域设置。 安装打印机后,GPD 分析程序将读取打印机的 GPD 文件,并使用与默认区域设置关联的 *Case 语句中的信息。 请注意,如果在安装打印机后更改了系统的区域设置,则基于区域设置的选项不会更改。

这是另一个示例,它根据区域设置选择资源 DLL。 资源 DLL 可以包含特定于区域设置的资源,例如显示字符串。

*switch: Locale
{
    *case: English_United_States
    {
        *ResourceDLL: english.dll
    }
    *case: German_Standard
    {
        *ResourceDLL: german.dll
    }
    *default:
    {
        *ResourceDLL: english.dll
    }
}

按区域设置默认纸张大小

你可能希望驱动程序根据用户的地理位置分配默认纸张大小(无论是公制还是非公制)。

以下算法检索默认系统区域设置,然后使用国家/地区代码来确定系统区域设置是否代表通常使用公制或非公制纸张大小的国家/地区。 利用此信息,驱动程序可以适当地设置默认纸张大小;例如,例如使用公制的国家/地区为 A4,不使用公制的国家/地区为信纸尺寸。

  1. 使用 GetLocaleInfo 函数检索默认系统区域设置。 将 LOCALE_SYSTEM_DEFAULT 用于第一个参数 Locale,将 LOCALE_ICOUNTRY 用于第二个参数 LCType

  2. 使用从 GetLocaleInfo 获取的默认系统区域设置来确定公制或非公制纸张大小。

    • 如果默认系统区域设置为以下,则为非公制:

      • CTRY_UNITED_STATES,或

      • CTRY_CANADA,或

      • 大于或等于 50,但小于 60 且不包含 CTRY_BRAZIL,或

      • 大于或等于 500,但小于 600

    • 否则为公制。