后台打印即打印时不弹出打印对话框,在某些不需要用户干预的时候非常有用。利用以下API可以很容易实现后台打印:
1.创建打印机DC
CreateDC( LPCWSTR pwszDriver, LPCWSTR pwszDevice, LPCWSTR pszPort, DEVMODEW * pdm);
pwszDriver:打印机驱动名称,可以为NULL也可以写成“WINSPOOL”
pwszDevice:打印机名称
pszPort:端口名称,为NULL使用默认端口。
pdm:DEVMODE指针,用于配置打印参数比如打印份数,打印方向,为NULL使用默认打印配置。
2.开始一个打印作业
int StartDoc( HDC hdc, // handle to DC CONST DOCINFO* lpdi // contains file names );3.结束一个打印作业
int EndDoc( HDC hdc // handle to DC );4.开始一个页面
int StartPage( HDC hDC // handle to DC );
5.结束一个页面
int EndPage( HDC hdc // handle to DC );
下面贴一段示例代码,注意该代码没有进行出错处理:
TCHAR lpszPrinter[MAX_PATH];
DWORD nSize = MAX_PATH;
GetDefaultPrinter(lpszPrinter,&nSize);
DOCINFO docInfo ={0};
HDC hDC = ::CreateDC(NULL, lpszPrinter, NULL,NULL);
docInfo.cbSize = sizeof(DOCINFO);
docInfo.lpszDocName = L"TEST";
::StartDoc(hDC,&docInfo);
::StartPage(hDC);
//在此绘图
::EndPage(hDC);
::EndDoc(hDC);
::DeleteDC(hDC);