怎样用 M FC 实现打印功能? 最佳答案 int count=this->m_logList.GetItemCount(),page,row=0; int i,j; page=count/40+1; CPrintDialog print(false); if(print.DoModal()==IDOK) { CDC printed; printed.Attach(print.GetPrinterDC()); DOCINFO pdoc; pdoc.cbSize=sizeof(pdoc); pdoc.lpszDocName=L"pdoc"; pdoc.lpszDatatype=NULL; pdoc.fwType=NULL; pdoc.lpszOutput=NULL; if(printed.StartDoc(&pdoc)>=0) { LOGFONT logfont; memset(&logfont,0,sizeof(LOGFONT)); logfont.lfHeight=75; CFont font; CFont *oldfont=NULL; if(font.CreateFontIndirect(&logfont)) oldfont=(CFont*)printed.SelectObject(&font); for(j=1;j<=page;j++) { printed.StartPage(); int x=500,y=400;//A4 纸,页面中的位置,横向为 x 轴,纵向是 y 轴,A4 maxX=4000 maxY=7000 建议按字符大小为 75,每页安排 40 条纪录,初试纪录开始位置为 x=500 y=200 CString pageHead,pageBottom; pageHead.Format(_T("日志信息纪录统计表")); printed.TextOut(1500,100,pageHead); //打印页眉 CString title;//设置标题栏 title.Format(_T("序号 时间 操作")); printed.TextOut(500,200,title); //打印页眉 CString stt; stt.Format(_T("______________________________________________________________________________________")); printed.TextOut(500,200+80,stt); //打印页眉 for(i=1;(i<40)&&(rowm_logList.GetItemText(row,0)+L" "; record+=this->m_logList.GetItemText(row,1)+L" "; record+=this->m_logList.GetItemText(row,2); printed.TextOut(x,y,record); y+=80; printed.TextOut(x,y,stt); y+=80; row++; } pageBottom.Format(_T("共%d 页 第%d 页"),page,j); printed.TextOut(1500,y,pageBottom); printed.EndPage();//此页结束 } font.DeleteObject(); if(oldfont!=NULL) printed.SelectObject(oldfont); printed.EndDoc(); } printed.DeleteDC(); } M FC 简单打印方法 2001-04-06· ·vc.faq··yesky 通过MFC 来完成打印作业有很多的方法,应用场合也有所不同。我们通常是利用视图框架在MFC基础之上按照OnPreparePrinting() à OnBeginPrinting() ? à OnPreprareDC() à OnPri...