引用区域设置

重要

建议使用 Microsoft 的 IPP 收件箱类驱动程序,以及 Print Support Apps (PSA) ,在 Windows 10 和 11 中自定义打印体验,以便进行打印机设备开发。

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

使用 GPD 文件

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

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

*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,对第二个参数 LCType 使用LOCALE_ICOUNTRY区域设置。

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

    • 如果默认系统区域设置为,则为非指标:

      • CTRY_UNITED_STATES,或

      • CTRY_CANADA,或

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

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

    • 否则为指标。