C++ C++;打印机don';我不想打印
我的代码有错误。我的打印机名为“XP—58”,不从C++程序中打印文本。 但当我从notepat运行print时,它工作正常。 我的C++代码< /P>C++ C++;打印机don';我不想打印,c++,windows,printing,C++,Windows,Printing,我的代码有错误。我的打印机名为“XP—58”,不从C++程序中打印文本。 但当我从notepat运行print时,它工作正常。 我的C++代码< /P> int _tmain(int argc, _TCHAR* argv[]) { LPTSTR printerName = (LPTSTR)_T("XP-58"); CString str = "la-la-la"; LPBYTE pByte = new BYTE[str.GetLength() + 1]; memc
int _tmain(int argc, _TCHAR* argv[])
{
LPTSTR printerName = (LPTSTR)_T("XP-58");
CString str = "la-la-la";
LPBYTE pByte = new BYTE[str.GetLength() + 1];
memcpy(pByte, (VOID*)LPCTSTR(str), str.GetLength());
DWORD count = 7;
BOOL result = RawDataToPrinter(printerName, pByte, count);
std::cout << result << std::endl;
system("pause");
return 0;
}
int-tmain(int-argc,_-TCHAR*argv[]
{
LPTSTR printerName=(LPTSTR)T(“XP-58”);
CString str=“la la”;
LPBYTE pByte=新字节[str.GetLength()+1];
memcpy(pByte,(VOID*)LPCTSTR(str),str.GetLength();
德沃德计数=7;
BOOL result=RawDataToPrinter(printerName、pByte、count);
std::cout打印机不知道您已发送完所有内容,因此无法打印
要完成一行,需要在字符串中添加字符“\r\n”
完成页面后,将“\f”
添加到字符串。打印机不知道您已完成发送所有内容,因此无法打印
要完成一行,需要在字符串中添加字符“\r\n”
完成页面后,将“\f”
添加到字符串。打印机不知道您已完成发送所有内容,因此无法打印
要完成一行,需要在字符串中添加字符“\r\n”
完成页面后,将“\f”
添加到字符串。打印机不知道您已完成发送所有内容,因此无法打印
要完成一行,需要在字符串中添加字符“\r\n”
完成页面后,将“\f”
添加到字符串中。应该帮助你。应该帮助你。应该帮助你。应该帮助你。应该帮助你。
#include "stdafx.h"
#include <Windows.h>
#include <Winspool.h>
#include <CommDlg.h>
#include <math.h>
#include <atlstr.h>
#include <iostream>
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("chargebox barcode check");
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;
}
int _tmain(int argc, _TCHAR* argv[])
{
LPTSTR printerName = (LPTSTR)_T("XP-58");
CStringW str = L"unicode";
int bytelen = 2 * str.GetLength();
LPBYTE pByte = new BYTE[bytelen];
memcpy(pByte, str, bytelen);
DWORD count = bytelen;
BOOL result = RawDataToPrinter(printerName, pByte, count);
std::cout << GetLastError() << std::endl;
std::cout << result << std::endl;
system("pause");
return(0);
}