创建打印机设备背景

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

应用程序可以通过以下两种方式之一创建打印机设备上下文:

*调用PrintDlg功能显示一个通用对话框,允许用户指定打印机选项,然后使用这些选项创建打印机设备上下文。

*使用WIN.INI文件中的默认打印机数据创建打印机设备上下文。

本节包含演示后一种方法的代码。

要使用默认打印机,请从WIN.INI文件中检索并解析相应的字符串。该字符串通过调用GetProfileString函数并指定适当的部分和条目名称来检索。在默认打印机的情况下,此数据存储在[windows]部分中,并由名为设备的条目标识。WIN.INI文件以下摘录中的第七行显示柯达Diconix打印机的条目。

[windows]

load=

run=

Beep=yes

Spooler=yes

NullPort=None

device=Diconix,winspool,LPT1:

CoolSwitch=1

BorderWidth=3

KeyboardSpeed=31

InitialKeyboardIndicators=2

CursorBlinkRate=530

DoubleClickSpeed=686

Programs=com exe bat pif cmd

Documents=

DeviceNotSelectedTimeout=15

TransmissionRetryTimeout=45

swapdisk=

NetWarn=1

fPromptOnVerbose=FALSE

fPromptOnWarning=FALSE

fPromptOnError=TRUE

fPrintVerbose=FALSE

fPrintFileLine=FALSE

shell=

ScreenSaveTimeOut=300

ScreenSaveActive=0

DebugOptions=2048

以下示例显示如何使用WIN.INI中的数据创建打印机设备上下文。

HDC hdcPrint; /* printer DC handle */

char szDevString[120]; /* array for WIN.INI data */

char *szPrinter, *szDriver; /* printer and driver names */

char *szPort; /* port name */

/*

*检索打印机,打印机驱动程序和

*来自WIN.INI的输出端口名称。

*/

GetProfileString(“windows”,“device”,“,,,”

szDevString, 120);

/*

*解析名字串,设置ptrs

* 按要求。如果字符串包含

*所需的名称,使用它们来创建一个

*设备上下文。

*/

if ((szPrinter = strtok(szDevString,

(const char *)“,”))

&& (szDriver = strtok ((char *) NULL,

(const char *)“,”))

&& (szPort = strtok ((char *) NULL,

(const char *)“,”)))

hdcPrint = CreateDC(szDriver, szPrinter,

szPort, NULL);

/*

*打印包含字符串的测试页

*左上角的“打印机测试”。

*/

Escape(hdcPrint, STARTDOC, 8, "Test-Doc", NULL);

TextOut(hdcPrint, 50, 50, "PRINTER TEST", 12);

Escape(hdcPrint, NEWFRAME, 0, NULL, NULL);

Escape(hdcPrint, ENDDOC, 0, NULL, NULL);

/ *删除打印机DC。*/

DeleteDC(hdcPrint);