初学者向您请教VC实现打印功能(急!在线等待)

anhongmei11111 2004-12-13 01:25:09
本人为VC++初学者,在有写语句都读不懂的情况下要向一个程序里加直接打印功能
要打印的内容为刚刚收到的数据,让数据在打印机上打印出来.基本代码有哪些?我没经验,谢谢高手指点!
...全文
85 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
imuzdl 2004-12-14
  • 打赏
  • 举报
回复
如果在文档视图结构中,系统自己就实现了,把ondraw改改就行了
imuzdl 2004-12-14
  • 打赏
  • 举报
回复
如果你需要在没有使用文档/视图的应用中使用打印功能(比如说在对话框中)你将无法利用MFC提供的功能,而且对于某些新手来讲有些困难。 下面的的代码可以供你在对话框中如果在DOC/View中一样使用打印功能。你必须定义OnBeginPrinting, OnEndPrinting 和 OnPrint三个函数,其原型和功能与在VIEW中一样。
void CMyDialog::Print()
{
CDC dc;
CPrintDialog printDlg(FALSE);
//利用CPrintDialog 生成打印机设备环境
if (printDlg.DoModal() == IDCANCEL) // Get printer settings from user 让用户选择打印纸张等
return;

dc.Attach(printDlg.GetPrinterDC()); // Attach a printer DC 让HANDLE连接到dc上
dc.m_bPrinting = TRUE;

CString strTitle; // Get the application title ?
strTitle.LoadString(AFX_IDS_APP_TITLE);

DOCINFO di; // Initialise print document details DOCINFO中有相关的打印信息
::ZeroMemory (&di, sizeof (DOCINFO));
di.cbSize = sizeof (DOCINFO);
di.lpszDocName = strTitle;//设置标题

BOOL bPrintingOK = dc.StartDoc(&di); // Begin a new print job 开始打印

// Get the printing extents and store in the m_rectDraw field of a
// CPrintInfo object
CPrintInfo Info;//
Info.m_rectDraw.SetRect(0,0,
dc.GetDeviceCaps(HORZRES),
dc.GetDeviceCaps(VERTRES));//设置范围

OnBeginPrinting(&dc, &Info); // 调用你自己定义的初始化功能
for (UINT page = Info.GetMinPage(); page<Info.GetMaxPage()&& bPrintOK;page++)
{Info.m_nCurPage = page;
OnPrint(&dc, &Info); // Call your "Print page" function
bPrintingOK = (dc.EndPage() > 0); // end page
}
OnEndPrinting(&dc, &Info); // 结束打印

if (bPrintingOK)
dc.EndDoc(); // end a print job
else
dc.AbortDoc(); // abort job.

dc.Detach(); // detach the printer DC
}

其实在WINDOWS环境中是设备无关的。只要有了DC,你可以使用各种GDI函数,而不需要理会是在屏幕或是在打印机上绘图。在Windows3.X一般使用CreateDC创建打印环境,在WIN32下好象并不是很兼容,使用CPrintDialog产生打印DC是个不错的方法。你只要看看MFC的源代码就能搞清楚PrintDialog是怎么产生DC的了。 蓝色的代码是讲诉如何初始化打印的参数,而其他的参数你可以在OnBeginPrint中进行设置
property1 2004-12-13
  • 打赏
  • 举报
回复
随便找本 讲 vc 的书一般都讲如何打印
看一下 照着做就行了 ,

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧