Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В примере кода далее в этом разделе показано, как отправлять данные управления принтерами непосредственно в принтеры, использующие драйверы принтера на основе GDI.
Ниже описано, как отправлять данные непосредственно на принтер. Эти шаги также показаны в следующем примере кода.
- Вызовите OpenPrinter, чтобы получить дескриптор принтера.
- Инициализируйте структуру DOCINFO с данными принтера.
- Вызовите StartDocPrinter, чтобы указать, что приложение будет отправлять данные документа на принтер.
- Вызовите StartPagePrinter, чтобы указать, что приложение отправит новую страницу на принтер.
- Вызовите WritePrinter для отправки данных.
- Вызовите EndPagePrinter, чтобы указать, что все данные для текущей страницы отправлены.
- Вызовите EndDocPrinter, чтобы указать, что все данные для этого документа отправлены.
- Вызовите ClosePrinter, чтобы освободить ресурсы.
Отправляйте данные управления принтерами непосредственно на принтеры, использующие драйверы принтера на основе GDI.
//
// RawDataToPrinter - sends binary data directly to a printer
//
// szPrinterName: NULL-terminated string specifying printer name
// lpData: Pointer to raw data bytes
// dwCount Length of lpData in bytes
//
// Returns: TRUE for success, FALSE for failure.
//
BOOL RawDataToPrinter(LPTSTR szPrinterName, LPBYTE lpData, DWORD dwCount)
{
BOOL bStatus = FALSE;
HANDLE hPrinter = NULL;
DOC_INFO_1 DocInfo;
DWORD dwJob = 0L;
DWORD dwBytesWritten = 0L;
// Open a handle to the printer.
bStatus = OpenPrinter( szPrinterName, &hPrinter, NULL );
if (bStatus) {
// Fill in the structure with info about this "document."
DocInfo.pDocName = (LPTSTR)_T("My Document");
DocInfo.pOutputFile = NULL;
DocInfo.pDatatype = (LPTSTR)_T("RAW");
// Inform the spooler the document is beginning.
dwJob = StartDocPrinter( hPrinter, 1, (LPBYTE)&DocInfo );
if (dwJob > 0) {
// Start a page.
bStatus = StartPagePrinter( hPrinter );
if (bStatus) {
// Send the data to the printer.
bStatus = WritePrinter( hPrinter, lpData, dwCount, &dwBytesWritten);
EndPagePrinter (hPrinter);
}
// Inform the spooler that the document is ending.
EndDocPrinter( hPrinter );
}
// Close the printer handle.
ClosePrinter( hPrinter );
}
// Check to see if correct number of bytes were written.
if (!bStatus || (dwBytesWritten != dwCount)) {
bStatus = FALSE;
} else {
bStatus = TRUE;
}
return bStatus;
}
Связанные разделы