关于打印!!高手进
Arh 2004-12-08 10:13:32 我在vckbase上下载了一个基于对话框的打印程序printdemo,可是怎么运行的时候纸会在打印机里走,可是出来什么也没打上呀,比如:
bool MyPrint::InitPrint(int itemy)
{
m_itemy = itemy;
CPrintDialog printDlg(FALSE);
//利用CPrintDialog 生成打印机设备环境
if (printDlg.DoModal() == IDCANCEL) return false;
// 连接到dc上
printdc.Attach(printDlg.CreatePrinterDC());
printdc.m_bPrinting = TRUE;
printdc.SetMapMode(MM_LOMETRIC);
// 设置字体
oldfont = printdc.SelectObject(&m_font);
// 计算字体
nHorRes = printdc.GetDeviceCaps(HORZRES);
nVerRes = printdc.GetDeviceCaps(VERTRES);
TEXTMETRIC tm;
printdc.GetTextMetrics(&tm);
nCharHeight = tm.tmHeight;
nCharWidth = tm.tmAveCharWidth;
pageend_y = nVerRes - 150;
// 设置打印作业
CString strTitle;
strTitle.LoadString(AFX_IDS_APP_TITLE);
// 打印作业的定义信息
::ZeroMemory (&di, sizeof (DOCINFO));
di.cbSize = sizeof (DOCINFO);
di.lpszDocName = strTitle;
return true;
}
BOOL MyPrint::StratPrint(void)
{
BOOL bPrintingOK = printdc.StartDoc(&di);
bPrintingOK &= printdc.StartPage();
return bPrintingOK;
}
void MyPrint::EndPrint(void)
{
CString str;
str.Format("-- 完 --",m_curpage);
int startx = 40 * str.GetLength();
printdc.SelectObject(oldfont);
printdc.TextOut(nHorRes - startx,nVerRes - 70 ,str);
printdc.EndPage();
printdc.EndDoc();
}
void MyPrint::PrintStr(CString str)
{
printdc.SelectObject(&m_font);
printdc.TextOut(cur_x,cur_y,str);
cur_y += nCharHeight + m_itemy;
if(cur_y >= pageend_y)
{
Nextpage();
}
}
void CPrintdemoDlg::OnButton1()
{
CString str1;
MyPrint print;
str1="asdfadfadsf";
print.SetFont(100,5);
if(!print.InitPrint(50))
return;
print.StratPrint();
print.PrintStr(str1);
print.EndPrint();
}