值宏
重要
新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) 来自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。
有关详细信息,请参阅新式打印平台和打印支持应用设计指南。
值宏可用于指定一组要单独和重复插入到通用打印机描述 (GPD) 文件中的一个或多个值。 值可为任意 GPD 值类型。
以下规则适用于值宏的使用:
GPD 文件中的值宏定义必须位于针对它的所有引用之前。
在根级别(即,大括号外)定义的值宏可通过定义它的 GPD 文件在其定义后进行使用。 否则,值宏的范围则为包含其定义的左、右大括号的集合。
值宏必须解析为某一 GPD 值类型。
如果所有值均为文本字符串,值宏定义则可引用以前定义的其他值宏,但值宏无法引用自身。
值宏不接受参数。
如果要创建具有相同名称的两个值宏,则第一个定义将生效,直到 GPD 分析程序遇到第二个定义。 然后,第二个定义会替换第一个定义。 如果第二个定义的范围已结束,则会恢复第一个定义。
值宏格式
要在 GPD 文件中定义一个或多个值宏,请使用以下格式:
*Macros: *ValueMacroGroupName { ValueMacroBody }
其中,ValueMacroGroupName 为唯一名称,ValueMacroBody 则为一组唯一值名称和关联值,如下所示:
ValueMacroName : MacroValue
其中,ValueMacroName 为唯一宏名称,MacroValue 则表示 GPD 值类型。 (只要解析出的字符串表示某一 GPD 值类型,MacroValue 便可包含对以前定义的值宏的引用。)
例如,可为一组常用命令前缀定义值宏,如下所示:
*Macros: HP4L
{
LetterCmdPrefix: "<1B>&l2a8c1E<1B>*p0x0Y"
A4CmdPrefix: "<1B>&l26a8c1E<1B>*p0x0Y"
Env10CmdPrefix: "<1B>&l81a8c1E<1B>*p0x0Y"
}
ValueMacroGroupName(在本例中为 HP4L)为可选参数,且被视为注释。
引用值宏
要引用值宏,请使用以下格式:
= ValueMacroName
其中,ValueMacroName 为唯一名称,并于之前在定义该宏的 *Macros 条目中指定。
例如,要在命令规范中引用某一 HP4L 宏,则可使用以下条目:
*Command: CmdSelect
{
*Cmd: =LetterCmdPrefix "<1B>*c0t5760x7680Y"
}
仅当所有宏定义和其他值均表示文本或命令子字符串时,才可通过将宏引用与非宏值相结合来分配值,如本示例所示。 在所有其他情况下,宏引用均须代表要分配的整个值。