以下代码示例确定所选打印机是否能够通过调用GetDeviceCaps功能打印位图,提供RASTERCAPS值。通过检查此函数的返回值,应用程序可以确定是否打印文档或通知用户设备不支持光栅输出。
/*
*检查设备的光栅功能
*由pd.hDC识别以验证其是否支持
* BitBlt功能。
*/
if(!(GetDeviceCaps(pd.hDC,RASTERCAPS)
& RC_BITBLT)) {
DeleteDC(pd.hDC);
MessageBox(hwnd,
“打印机无法显示位图”。
“设备错误”,
MB_OK);
break;
}
在示例应用程序确定所选打印机能够打印位图之后,按照以下步骤操作:
1.设置应用程序的中止过程可以检查以确定是否允许打印继续的布尔标志。
2.注册应用程序的AbortProc功能,用于取消打印作业。
3.显示无模式取消对话框。
4.显示对话框时,显示应用程序的窗口。
以下代码示例中说明了这些步骤。
/*
*设置AbortPrintJob使用的标志
*对话程序。
*/
bPrint = TRUE;
/*
*注册申请的AbortProc
*功能与GDI。
*/
SetAbortProc(pd.hDC, AbortProc);
/ *显示无模式取消对话框。*/
hdlgCancel = CreateDialog(hinst, (LPTSTR) "AbortDlg",
hwnd, (DLGPROC) AbortPrintJob);
/ *禁用应用程序的窗口。*/
EnableWindow(hwnd, FALSE);
一旦应用程序使用Windows注册AbortProc,GDI会在打印过程中重复调用该函数,以确定是否取消作业。在当前版本的Win32 API中,GDI大约每两秒钟调用此函数,直到整个作业都被假脱机。
如果用户选择取消作业,GDI会通知假脱机程序,它应该从打印队列中删除相应的日志文件,并将打印机重置为默认状态。