共用方式為


條件陳述式

重要

新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。

如需詳細資訊,請參閱 新式列印平臺列印支援應用程式設計指南

GPD 語言提供類似 C 的條件語句,可讓您描述某些印表機屬性在列印機組態上可以擁有的相依性。 例如,頁面的邊界和游標原點可能取決於頁面的方向。 *Switch*Case 語句可讓您表達這類相依性。 這些語句格式如下:

*Switch FeatureName { *Case Option1_Name { } *Case Option2_Name { } etc. *Case OptionN_Name { } *Default { } }

FeatureName 必須是具有 *功能專案之 GPD 檔案 中指定的功能 名稱。 所使用的選項名稱必須是與指定功能相關聯的選項。

若要表示頁面邊界和游標原點相依於頁面方向的情況,可以使用下列專案:

*Feature: Orientation
{
    *DefaultOption: Portrait
    *Option: Portrait
    {
        *Name: "Portrait"
        *rcIconID: =RC_ICON_PORTRAIT
    }
    *Option: LANDSCAPE_CC90
    {
        *Name: "Landscape"
        *rcIconID: =RC_ICON_LANDSCAPE
    }
}
*Feature: PaperSize
{
    *DefaultOption: Letter
    *Option: Letter
    {
        *Name: "Letter 8.5 x 11 inch"
        *switch: Orientation
        {
            *case: Portrait
            {
                *PrintableArea: PAIR(4800, 6324)
                *PrintableOrigin: PAIR(150, 150)
                *CursorOrigin: PAIR(150,100)
            }
            *case: LANDSCAPE_CC90
            {
                *PrintableArea: PAIR(4860, 6360)
                *PrintableOrigin: PAIR(120, 120)
                *CursorOrigin: PAIR(100,6480)
            }
        }
    }
}

在此範例中,印表機 PaperSize 功能的選項取決於印表機 方向 功能的選取選項。

如果您未將所有功能的選項 列為 *Case 語句自變數,您可以包含 *Default 語句,就像 C 語言一樣。 如果您未包含所有選項,而且不包含 *Default 語句,則必須評估 GPD 檔案中其他位置的相關屬性(例如 *PrintableArea、*PrintableOrigin*CursorOrigin)。

指定多個相依性

您可以在 *Case*Default 語句中包含 *Switch 語句。 這可讓您指定多個相依性,如下所示:

*Feature: feature1 {*Option: optionA {...} *Option: optionB {...}}
*Feature: feature2 {*Option: optionC {...} *Option: optionD {...}}
*Feature: feature3 
    {*Option: optionE 
        {*Switch: feature1 
            {*Case: optionA
                 {*Switch: feature2
                     {*Case: optionD
                         {AttributeX: ValueX}
                      *Default
                         {AttributeX: ValueY}
                     }
                 }
             *Default
                  {AttributeX: ValueZ}
             }
         }
    *Option: optionF {...} 
    }

在此範例中,屬於 feature3 optionE 的 AttributeX 相依於 feature1 和 feature2。

如果使用者已針對 feature1 選取 optionA、feature2 的 optionD 和 feature3 的 optionE,則 attributeX 會設定為 ValueX。

如果使用者已針對 feature1 選取 optionA、feature2 的 optionC 和 feature3 的 optionE,則 attributeX 會設定為 ValueY。

如果使用者已針對 feature1 選取 optionB,並針對 feature3 選取 optionE,則 attributeX 會設定為 ValueZ。 Feature2 的設定無關緊要。

指定多個相依性時,適用下列規則:

  • 必須在單 一 *Switch 專案的範圍內指定多個相依性。 例如,使用範例時,您無法使用 *Switch 專案來指出 feature3 相依於 feature1,然後在後續的非巢狀 *Switch 語句中,指出 feature3 相依於 feature2。

  • 您無法在每個巢狀 *Switch 專案內多次指定相同的功能。

放置 *Switch 語句的位置

您可以將 *Switch 語句放在 GPD 檔案內的下列位置:

  • 在 *Option 語句內

  • 在 *Feature 語句內

  • *Case 語句內

  • *Default 語句內

  • 在檔案的最上層 (也就是不在一組大括弧內)

要放在 *Switch、*Case 和 *Default 語句內的內容

*Switch 專案內,您只能 放置 *Case*Default 專案。

可以放在 *Case*Default 專案內的 GPD 檔案專案稱為可重新放置的專案。 下列 GPD 專案類型是可重新放置的:

  • 大部分印表機屬性,但根層級專用屬性除外。 (一般屬性 前面必須加上 EXTERN_GLOBAL,除非 *Switch 項目位於根層級 ,而不是大括弧內。

  • 巢狀 *Switch 專案,可讓您指定多個相依性。

  • *命令專案。

  • *TTFSEnabled?,可啟用字型替代。

下列 GPD 專案類型無法重新放置:

  • 僅限根層級的屬性。

  • *指定替代字型的 TTFS 專案。

  • *條件約束、*InvalidCombination、*InvalidInstallableCombination、*NotInstalledConstraints 專案,定義無效的選項組合,如選項條件約束中所述

  • *功能與 *選項專案(雖然 功能屬性選項屬性 可重新放置)。

判斷專案是否已正確放置在 *Case 語句內的其中一個方法是移除所有 *Switch 和 *Case 語句。 如果 *Case 語句內的項目正確,在移除 *Switch 和 *Case 語句之後,它們仍然正確。

V4 列印驅動程式中衍生自類別驅動程式的 switch 語句排序

衍生 v4 印表機驅動程式的 GPD 檔案必須遵循與基類驅動程式相同的順序。

請參考下列案例。 您有 v4 印表機驅動程式,其衍生自 v4 類別驅動程式,方法是將 RequiredClass 設定為 *-manifest.ini 檔案中的類別驅動程式。

類別驅動程式的 GPD 檔案具有下列切換樹狀結構:

* Option: A4
    1. Switch: Resolution
* Option: Letter
    1. Switch: Resolution
    2. Switch: InputBin

衍生的 v4 印表機驅動程式想要新增 MarginSetting 參數,因此其 GPD 檔案會有下列切換樹狀結構:

* Option: A4
    1. Switch: Resolution
    2. Switch: InputBin
    3. Switch: MarginSetting
* Option: Letter
    1. Switch: Resolution
    2. Switch: InputBin
    3. Switch: MarginSetting

請注意,在衍生 GPD 中的 InputBinMarginSetting 設定兩者之後,都會設定 Resolution。 衍生的 v4 印表機驅動程式的 GPD 檔案會遵循與基類驅動程式 相同的順序,並在 之後新增 MarginSetting

例如,不正確地衍生的 GPD 檔案看起來可能如下所示:

* Option: A4
    1. Switch: MarginSetting
    2. Switch: InputBin
    3. Switch: Resolution
* Option: Letter
    1. Switch: MarginSetting
    2. Switch: InputBin
    3. Switch: Resolution