软件环境xp + vc++ 6.0
打印机,EPSON-1600K
打印的纸张是连续的,纸张边缘带针孔的那种打印的格式为自定义,只有1~3行数据,但是打印完成后,纸张会自动走完整的一页,大部分纸都空白浪费掉了,
想实现的目标是: 打印完数据后, 控制打印机走纸, 只让带字的一小段纸张出来,而不是整一张纸都出来,请问如何用mfc控制打印机的走纸?
打印机,EPSON-1600K
打印的纸张是连续的,纸张边缘带针孔的那种打印的格式为自定义,只有1~3行数据,但是打印完成后,纸张会自动走完整的一页,大部分纸都空白浪费掉了,
想实现的目标是: 打印完数据后, 控制打印机走纸, 只让带字的一小段纸张出来,而不是整一张纸都出来,请问如何用mfc控制打印机的走纸?
/C++CPrintDialog dlg(FALSE,PD_NOPAGENUMS|PD_COLLATE,this); if(dlg.DoModal() == IDOK)
{
CDC dc;
dc.Attach(dlg.GetPrinterDC());
DOCINFO di;
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = "SimplePrintDoc";
di.lpszOutput = NULL;
di.lpszDatatype = NULL;
di.fwType = 0;
dc.StartDoc(&di);
dc.StartPage();
dc.SetMapMode(MM_HIENGLISH);
CRect rectPrint(0, 0,
dc.GetDeviceCaps(HORZRES),
dc.GetDeviceCaps(VERTRES));
dc.DPtoLP(&rectPrint);
dc.SetWindowOrg(-150, -rectPrint.bottom);//dc.SetWindowOrg(-2150, -rectPrint.bottom);
CFont font;
VERIFY(font.CreatePointFont(120, "宋体", &dc));//VERIFY(font.CreatePointFont(120, "Arial", &dc));
CFont* def_font = dc.SelectObject(&font);
dc.SetTextAlign(TA_TOP|TA_LEFT); CString toPrintStringTemp = toPrintStringAll;
toPrintStringTemp += "\n"; CString ss;
int index;
CSize size;
int x = 300;//300;
int y = 9000;//9000;
size = dc.GetTextExtent("00", 2);
while((index = toPrintStringTemp.Find("\n")) != -1)
{
ss = toPrintStringTemp.Left(index);
if(ss.Find("\r") != -1)
ss = toPrintStringTemp.Left(index-1);
toPrintStringTemp = toPrintStringTemp.Mid(index+1);
dc.TextOut(x, y, ss);
y -= size.cy;
}
//dc.TextOut(x, y, ss);
dc.SelectObject(def_font);
font.DeleteObject();
dc.EndPage();
dc.EndDoc();
DeleteDC(dc.Detach());
}
能不能具体的说下? 那个函数是page size?
一下,明天接上打印机试验一下