我用针式打印机,在WORD中自定义大小后,打印机停在了纸的长度位置
而我写的代码自定义了纸张的大小,却不能使打印机打印后停止在自定义长度的位置
它一直走的A4的长度...请各位朋友帮忙了请在本贴和另一帖留名,以便加分,谢谢
http://community.csdn.net/Expert/topic/4530/4530641.xml?temp=5.183047E-02
而我写的代码自定义了纸张的大小,却不能使打印机打印后停止在自定义长度的位置
它一直走的A4的长度...请各位朋友帮忙了请在本贴和另一帖留名,以便加分,谢谢
http://community.csdn.net/Expert/topic/4530/4530641.xml?temp=5.183047E-02
DWORD dmFields;
short dmOrientation;
short dmPaperSize;
short dmPaperLength;
short dmPaperWidth;如何在 Windows NT 和 Windows 2000 中使用自定义页面大小打印
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;282474
void CtstDlg::OnBnClickedOk()
{
CPrintDialog pdlg(FALSE);//,PD_NOPAGENUMS|PD_NOSELECTION,this);
if(!pdlg.GetDefaults())
{
AfxMessageBox("cannot get the default printer!");
return;
} LPDEVMODE pDM = (LPDEVMODE)::GlobalLock(pdlg.GetDevMode());
if (pDM==NULL)
{
AfxMessageBox("can't get the devmode struct");
return;
} pDM->dmPaperSize=DMPAPER_USER;
pDM->dmPaperLength=1000;
pDM->dmPaperWidth=2100;
::GlobalUnlock(pDM); HDC hDC;//的类成员变量
hDC=pdlg.CreatePrinterDC();
CDC dc;
dc.Attach(pdlg.GetPrinterDC());
if (!dc.Attach(hDC))
{
AfxMessageBox("cannot attach the dc");
return;
}
dc.m_bPrinting=TRUE; CFont font;
VERIFY(font.CreatePointFont(120, "宋体", &dc));//为DC创建字体
CFont* def_font = dc.SelectObject(&font);//保存现在的字体
DOCINFO di;
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = "FarFly printing";
di.lpszOutput = (LPTSTR) NULL;
di.lpszDatatype = (LPTSTR) NULL;
di.fwType = 0;
dc.StartDoc(&di);
dc.StartPage();
int line = 0;
CString sftitle = "远飞电器有限公司";
dc.TextOut(2,line++,sftitle,strlen(sftitle)); dc.EndPage();
dc.EndDoc(); dc.SelectObject(def_font); //恢复原来的字体
font.DeleteObject();
DeleteDC(dc.Detach()); return;
}
PRINTDLG *pPrintDlg = &dlg.m_pd;
AfxGetApp()->GetPrinterDeviceDefaults(pPrintDlg);
DEVMODE* lpDevMode = (DEVMODE*)::GlobalLock(pPrintDlg->hDevMode);
::GlobalUnlock(pPrintDlg->hDevMode);
//lpDevMode->dmFields |= -1; //设定为自定义纸张尺寸, 如果用其他预定义的纸张尺寸,把这一行去掉,用下一行
lpDevMode->dmPaperSize = DMPAPER_A3; //设定为 A3 纸
lpDevMode->dmOrientation = DMORIENT_LANDSCAPE;