Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Het moderne afdrukplatform is de voorkeursmiddel van Windows om te communiceren met printers. We raden aan om de IPP inbox class driver van Microsoft te gebruiken, samen met Print Support Apps (PSA), om de afdrukervaring in Windows 10 en 11 aan te passen voor de ontwikkeling van printerapparaten.
Zie de ontwerphandleiding voor Print Support App v1 en v2 voor meer informatie.
De GPD-taal biedt C-achtige voorwaardelijke instructies waarmee u afhankelijkheden kunt beschrijven die sommige printerkenmerken kunnen hebben in de configuratie van een printer. De marges en de oorsprong van de cursor voor een pagina kunnen bijvoorbeeld afhankelijk zijn van de oriëntatie van de pagina. Met de instructies *Switch en *Case kunt u dergelijke afhankelijkheden uitdrukken. De indeling van deze instructies is als volgt:
*Switch FeatureName { *Case Option1_Name { } *Case Option2_Name { } etc. *Case OptionN_Name { } *Default { } }
FeatureName moet de naam zijn van een functie die is opgegeven in het GPD-bestand met een *Functie-vermelding . De gebruikte optienamen moeten opties zijn die zijn gekoppeld aan de opgegeven functie.
Om het geval uit te drukken waarin paginamarges en de oorsprong van de cursor afhankelijk zijn van de oriëntatie van de pagina, kunnen de volgende instellingen worden gebruikt:
*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)
}
}
}
}
In dit voorbeeld zijn de opties voor de functie PaperSize van de printer afhankelijk van de geselecteerde optie voor de afdrukstand van de printer.
Als u niet alle opties van een functie vermeldt als * Case-instructieargumenten, kunt u een *Standaardinstructie opnemen, net zoals in de C-taal. Als u niet alle opties opneemt en u geen *Standaardinstructie opneemt, moet u relevante kenmerken evalueren (in het voorbeeld *PrintableArea, *PrintableOrigin en *CursorOrigin) ergens anders in het GPD-bestand, voorafgaand aan de instructie *Switch .
Meerdere afhankelijkheden opgeven
U kunt *Switch-instructies opnemen in *Case-instructies en *Default-instructies. Hiermee kunt u als volgt meerdere afhankelijkheden opgeven:
*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 {...}
}
In dit voorbeeld is AttributeX, behorend tot optionE van feature3, afhankelijk van zowel functie1 als functie2.
Als de gebruiker optieA voor functie1, optieD voor functie2 en optionE voor feature3 heeft geselecteerd, wordt attributeX ingesteld op ValueX.
Als de gebruiker optieA voor functie1, optionC voor functie2 en optionE voor functie3 heeft geselecteerd, wordt attributeX ingesteld op WaardeY.
Als de gebruiker optieB voor functie1 en optionE voor functie3 heeft geselecteerd, wordt attributeX ingesteld op ValueZ. De instelling voor Feature2 is niet relevant.
De volgende regels zijn van toepassing bij het opgeven van meerdere afhankelijkheden:
Er moeten meerdere afhankelijkheden worden opgegeven binnen één *Switch-invoerveld. Met behulp van het voorbeeld kunt u bijvoorbeeld geen *Switch-vermelding gebruiken om aan te geven dat functie3 afhankelijk is van functie1. In een volgende, niet-geneste *Switch-instructie geeft u aan dat functie3 afhankelijk is van functie2.
U kunt hetzelfde kenmerk niet meer dan één keer opgeven binnen elke geneste *Switch-invoer.
Waar een *switch-verklaring plaatsen
U kunt een *Switch-statement plaatsen op de volgende locaties in een GPD-bestand:
Binnen een Option-verklaring
Binnen een *Kenmerk-verklaring
Binnen een *Case-instructie
Binnen een *default-statement
Op het topniveau van het bestand (dus niet binnen een set accolades)
Wat te plaatsen in *Switch, *Case en *Default Statements
Binnen een *Switch-vermelding kunt u alleen *Case-vermeldingen en *Default-vermeldingen plaatsen.
GPD-bestandsvermeldingen die in *Case of *Standaard kunnen worden geplaatst, worden verplaatsbare vermeldingen genoemd. De volgende types GPD-inschrijvingen zijn verplaatsbaar:
De meeste printerkenmerken, met uitzondering van alleen root-level-attributen. (Algemene attributen moeten worden voorafgegaan door EXTERN_GLOBAL, tenzij de *Switch-vermelding zich op het rootniveau bevindt - dus niet tussen accolades.)
Geneste *Switch-vermeldingen waarmee u meerdere afhankelijkheden kunt specificeren.
*Opdrachtvermeldingen.
*TTFSEnabled?, waarmee lettertypevervanging mogelijk is.
De volgende typen GPD-vermeldingen kunnen niet worden verplaatst:
Kenmerken alleen op hoofdniveau.
*TTFS-vermeldingen voor het specificeren van een vervangend lettertype.
*Constraints, *InvalidCombination, *InvalidInstallableCombination, *NotInstalledConstraints vermeldingen die ongeldige combinaties van opties definiëren, zoals beschreven in de sectie Optiebeperkingen.
*Functie- en *Optievermeldingen (hoewel attributen van functies en attributen van opties verplaatsbaar zijn).
Eén methode om te bepalen of vermeldingen correct in *Case-instructies zijn geplaatst, is door alle *Switch - en *Case-instructies te verwijderen. Als de vermeldingen in de *Case-instructies juist zijn, zijn ze nog steeds juist nadat de instructies *Switch en *Case zijn verwijderd.
Volgorde van switchinstructies in een V4-printerstuurprogramma gebaseerd op een klassestuurprogramma
Het GPD-bestand van het afgeleide v4-printerstuurprogramma moet dezelfde volgorde volgen als het basisklassestuurprogramma.
Houd rekening met het volgende scenario. U hebt een v4-printerstuurprogramma dat is afgeleid van een v4-klassestuurprogramma door RequiredClass in te stellen op het klassestuurprogramma in een *-manifest.ini-bestand.
Het GPD-bestand van de class-driver heeft de volgende schakelschema:
* Option: A4
1. Switch: Resolution
* Option: Letter
1. Switch: Resolution
2. Switch: InputBin
Het afgeleide v4-printerstuurprogramma wil de MarginSetting-switch toevoegen, zodat het GPD-bestand de volgende switchstructuur heeft:
* Option: A4
1. Switch: Resolution
2. Switch: InputBin
3. Switch: MarginSetting
* Option: Letter
1. Switch: Resolution
2. Switch: InputBin
3. Switch: MarginSetting
Houd er rekening mee dat Resolutie is ingesteld voor InputBin in de afgeleide GPD en dat MarginSetting na beide is ingesteld. Het GPD-bestand van het afgeleide v4-printerstuurprogramma volgt dezelfde volgorde als de stuurprogramma's van de basisklasse en voegt MarginSetting daarna toe.
Een onjuist afgeleid GPD-bestand kan er bijvoorbeeld als volgt uitzien:
* Option: A4
1. Switch: MarginSetting
2. Switch: InputBin
3. Switch: Resolution
* Option: Letter
1. Switch: MarginSetting
2. Switch: InputBin
3. Switch: Resolution