应用程序可以通过以下两种方式之一创建打印机设备上下文:
*调用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);