編程實現後臺打印

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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章