後臺打印即打印時不彈出打印對話框,在某些不需要用戶干預的時候非常有用。利用以下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);