Escape

【勇芳软件工作室】汉化HomePreviousNext

Escape功能允许应用程序访问不能通过GDI直接使用的特定设备的功能。由应用程序进行的Escape呼叫转换并发送给驱动程序。

int Escape(

HDC 【HDC】,//处理设备上下文
INT 【nEscape】,//转义功能
INT 【cbInput】,//输入结构中的字节数
LPCSTR 【lpvInData】,//指向输入结构的指针
LPVOID 【lpvOutData】//指向输出结构的指针
); 

参数

【HDC】

标识设备上下文。

【nEscape】

指定要执行的转义函数。此参数必须是预定义的转义值之一。如果应用程序定义私有转义值,请使用ExtEscape函数。

【cbInput】

指定【lpvInData】参数指向的数据的字节数。

【lpvInData】

指向指定转义所需的输入结构。

【lpvOutData】

指向从该转义接收输出的结构。如果没有返回数据,此参数应为NULL。

返回值

如果函数成功,则返回值大于零,但QUERYESCSUPPORT打印机转义除外,仅检查实现。如果没有实现转义,返回值为零。

如果函数失败,返回值是一个错误。要获取扩展错误信息,请调用GetLastError.

错误

如果函数失败,则返回值为以下值之一。

含义
SP_ERROR一般错误。如果返回SP_ERROR,逃逸可能会将最后一个错误代码设置为:

ERROR_INVALID_PARAMETER
ERROR_DISK_FULL
ERROR_NOT_ENOUGH_MEMORY
ERROR_PRINT_CANCELLED

SP_OUTOFDISK当前没有足够的磁盘空间用于假脱机,并且没有更多的空间可用。
SP_OUTOFMEMORY没有足够的内存可用于假脱机。
SP_USERABORT用户通过Windows打印管理器终止作业。

备注

Win32 API提供了六个新功能,可以取代一些打印机转义:

功能描述
AbortDoc终止打印作业。取代了ABORTDOC逃逸。
EndDoc结束打印作业。取代ENDDOC转义。
EndPage结束页面取代NEWFRAME逃生。与NEWFRAME不同,打印页面后始终会调用此函数。
SetAbortProc设置打印作业的中止功能。取代SETABORTPROC转义。
StartDoc开始打印作业。取代STARTDOC转义。
StartPage准备打印机驱动程序接收数据。

Win32 API为GetDeviceCaps功能提供了六个新的索引,取代了一些打印机转义:

指数描述
PHYSICALWIDTH对于打印设备:物理页面的宽度,以设备为单位。例如,设置为以8.5“x11”纸张上的600 dpi打印的打印机的物理宽度值为5100设备单位。请注意,物理页面几乎总是大于页面的可打印区域,并且从不更小。
PHYSICALHEIGHT对于打印设备:物理页面的高度,以设备为单位。例如,设置为以8.5“x11”纸张上的600 dpi打印的打印机的物理高度值为6600个设备单位。请注意,物理页面几乎总是大于页面的可打印区域,并且从不更小。
PHYSICALOFFSETX对于打印设备:以物理页面的左边缘到可打印区域的左边缘的距离,以设备为单位。例如,设置为以最大0.25“纸张打印的8.5”x11“纸张上的600 dpi打印的打印机的水平物理偏移量为150个设备单位。
PHYSICALOFFSETY对于打印设备:以物理页面的顶部边缘到可打印区域的顶部边缘的距离,以设备为单位。例如,设置为以最大0.5“纸张打印的8.5”x11“纸张上的600 dpi打印的打印机的垂直物理偏移量为300个设备单位。

在原始打印机转义中,基于Win32的应用程序只能使用以下内容:

逃逸描述
QUERYYESCSUPPORT确定设备驱动程序是否实现特定的转义。

以下是仅适用于16位版本Windows的过时打印机转义列表:

逃逸描述
ABORTDOC停止当前打印作业,并擦除应用程序自上次ENDDOC转义以来写入设备的所有内容。
ENDDOC结束STARTDOC转义启动的打印作业。
GETPHYSPAGESIZE检索物理页面大小并将其复制到指定的位置。
GETPRINTINGOFFSET从实际打印或绘图开始的物理页面的左上角检索偏移量。
GETSCALINGFACTOR检索打印机的x轴和y轴的缩放因子。
NEWFRAME通知打印机应用程序已完成写入页面。
NEXTBAND通知打印机应用程序已完成写入频带。
PASSTHROUGH允许应用程序直接将数据发送到打印机。
SETABORTPROC设置打印作业的中止功能。
STARTDOC通知打印机驱动程序新的打印作业正在启动。

也可以看看

AbortDoc, EndDoc, EndPage, ExtEscape, SetAbortProc, StartDoc, StartPage, ResetDC