`
qzriso
  • 浏览: 242624 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

MFC简单打印方法

阅读更多

 通过MFC来完成打印作业有很多的方法,应用场合也有所不同。我们通常是利用视图框架在MFC基础之上按照OnPreparePrinting(),OnBeginPrinting() ,OnPreprareDC(), OnPrinting () ,OnEndPrinting()的顺序来编程的。对于我们使用单文档或者多文档的视图框架时这无疑是一种很好的方式。但是,在基于对话框的应用程序中,或者在很多打印要求不高的情况下(如只是简单的打印中间计算结果、报告程序异常等),我们就没有必要再绕上面的那么一个大弯子,可以直接利用MFC封装的打印对话框CPrintDialog来执行简单的打印任务。当然,如果你不怕烦,这种方式也可以执行很复杂的打印作业。

  下面做一个简单的例子程序。利用Visual C++ 6.0 的AppWizard生成一个对话框应用程序框架。然后,利用资源编辑器添加一个Edit控件,属性设置为:选择Multiline、Want Return ,根据你的兴趣选择滚动条有关的项,绑定成员变量m_strPrintString。使“确定(OK)”按钮不接受程序的“Enter”键消息,Caption改为“打印(Print)”。此键按下的处理函数如下:

if (!UpdateData(TRUE))

{

AfxMessageBox("数据交换有误!");

}

if (m_strPrintString==_T(""))

{

AfxMessageBox("请输入需要打印的文字?quot;);

return;

}

CPrintDialog dlg(FALSE,

PD_NOPAGENUMS|PD_NOSELECTION,

this);

if(dlg.DoModal() == IDOK)

{

CDC dc;

dc.Attach(dlg.GetPrinterDC());//把打印设备环境附加到DC对象

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);//设置当前影射模式为:单位0.001英寸

//X方向向右增加,Y方向向上增加

CRect rectPrint(0, 0,

dc.GetDeviceCaps(HORZRES),//返回设备的.以毫米为单位的物理显示宽度

dc.GetDeviceCaps(VERTRES));//返回设备的.以毫米为单位的物理显示高度

dc.DPtoLP(&rectPrint);//设备物理单位转化为逻辑单位

dc.SetWindowOrg(0, -rectPrint.bottom);//设置原点

CFont font;

VERIFY(font.CreatePointFont(120,

"Arial",

&dc));//为DC创建字体

CFont* def_font = dc.SelectObject(&font);//保存现在的字体

dc.SetTextAlign(TA_TOP|TA_LEFT);

CString s = m_strPrintString; //要打印的字符串(注意有长度的限制)


s += "\n"; //必须增加一个换行符号(因为后面while循环的要求)

CString ss;

int index;

CSize size;

int x = 300;

int y = 9000;//注意原点位置和坐标增加的方向

size = dc.GetTextExtent("00", 2);//计算使用当前字体输出时文本所占大小、宽 度

while((index = s.Find("\n")) != -1)

{

ss = s.Left(index);

if(ss.Find("\r") != -1)//输入的字符串有回车符

ss = s.Left(index-1);

s = s.Mid(index+1);//取剩余的字符串 // AfxMessageBox("A"+ss+"A");

dc.TextOut(x, y, ss);//打印到缓冲区

y -= size.cy;

}


dc.SelectObject(def_font); //恢复原来的字体

font.DeleteObject();

dc.EndPage(); //通知打印机驱动程序页结束

dc.EndDoc();//通知打印机驱动程序打印完毕

DeleteDC(dc.Detach());

}

  程序代码很简单,一看就明白,我想应该适合大多数的简单打印场合吧。另外,这个例子对于初学Windows编程的朋友来说,无疑也是一个理解Windows设备无关特性的好实例。

分享到:
评论

相关推荐

    Windows打印和MFC打印

    ### Windows打印与MFC打印详解 ...而MFC打印则提供了更高级别的抽象和更简单的接口,尤其适合那些希望快速开发带有打印功能的应用程序的开发者。在实际应用中,根据项目需求选择合适的打印方案至关重要。

    用MFC画图 打印 保存

    在Microsoft Foundation Classes (MFC)库的支持下,开发Windows应用程序变得更加简单,特别是在处理图形、打印和文件保存等任务时。MFC是微软为C++设计的一个类库,它提供了丰富的功能,帮助开发者创建用户界面、...

    MFC对话框打印及预览功能完美版

    花了一个星期,研究了网上大量的MFC对话框打印及打印预览功能的demo之后,选中了几个版本,合并修改,得到这个比较完美的版本(真心花了时间,功能上都实现了,也没有什么崩溃的问题)。其中几个打印具体内容的地方...

    MFC基本打印实例

    MFC的打印是一个难点,想在对话框程序中进行打印就更难,我在学习时参考了别人的代码,详细标注制作了一个基本打印示例。 void CTestDlg::OnOK() { // 最简单的打印示例 // 建立一个基于对话框的应用程序,将...

    mfc 打印机打印图片

    在本文中,我们将深入探讨如何使用MFC(Microsoft Foundation Class)库进行打印机操作,特别是针对打印图片的功能。MFC是Microsoft提供的一种C++类库,它封装了Windows API,简化了Windows应用程序的开发,包括与...

    MFC做的打印的例子程序

    总结来说,这个例子程序展示了如何利用 MFC 的 `CFrameWnd` 子类和 `CPrintView` 类来实现一个简单的打印应用,包含打印预览和打印功能。通过理解 MFC 中这些核心类的工作原理和交互方式,开发者可以轻松地扩展此...

    用MFC类定制的打印Printing with MFC Made Easy

    "用MFC类定制的打印Printing with MFC Made Easy"是一个专题,旨在帮助开发者理解和利用MFC库中的打印功能,使得打印操作变得更加简单易行。 在MFC中,打印主要涉及到`CPrintInfo`、`CView`、`CDocument`和`...

    实现MFC打印功能

    以下是一个简单的MFC打印功能实现的代码片段: ```cpp void CMyView::DoPrint(CPrintInfo* pInfo) { // 创建并初始化打印机DC CPaintDC dc(this); // 用于绘制到屏幕的DC CPrintDC printDC(&dc); // 用于打印的...

    c++ 实现打印 mfc4

    以下是一个简单的文本打印示例: ```cpp void CMyView::OnDraw(CDC* pDC) { // 在这里绘制你的文本 pDC->TextOut(50, 50, _T("Hello, World!")); } void CMyView::OnPreparePrinting(CPrintInfo* pInfo) { // ...

    MFC编程中的图形打印控制

    MFC内置的打印逻辑,使得打印控制和打印预览变得相对简单。然而,用户往往需要更灵活的打印选项,比如调整打印图形的大小和位置,而不改变屏幕上的显示效果。本文将探讨如何在MFC中实现这种图形打印控制,重点介绍...

    MFC工程项目中打印log日志

    在MFC(Microsoft Foundation Classes)工程中,打印log日志是一项重要的任务,它有助于开发者在程序运行过程中跟踪错误、调试代码以及记录系统行为。本文将详细介绍如何在MFC项目中实现这一功能,以便初学者更好地...

    MFC控制WORD实现编辑和打印(适合新手)

    在本文中,我们将深入探讨如何使用MFC(Microsoft Foundation Classes)框架来控制Microsoft Word应用程序,以便实现文本和图像的编辑以及打印功能。这对于初学者来说是一个很好的起点,可以帮助他们理解和掌握MFC与...

    关于MFC基于Dialog的对话框上实现打印功能

    ### 关于MFC基于Dialog的对话框上实现打印功能 #### 概述 ...这种实现方式适用于需要简单打印功能的应用场景。对于更复杂的需求,如支持多种页面布局、预览等功能,则需要进一步扩展现有的代码框架。

    opengl 雪花 无MFC 简单

    opengl 雪花 无MFC 简单,是一个非常初级的opengl编程。

    MFC打印功能

    以下是一个简化的示例代码,演示如何在Visual C++ 6.0中创建一个简单的对话框应用程序并实现打印功能。 1. **新建项目**:在Visual C++ 6.0中新建一个基于对话框的应用程序。 2. **添加按钮**:在对话框中添加一个...

    MFC操作默认打印机打印简单语句

    MFC操作默认打印机打印简单语句

    mfc简单窗口

    在这个“MFC简单窗口”的示例中,虽然没有直接使用MFC,但我们可以看到一个基础的Windows核心编程的实现,这是理解MFC窗口应用的基础。 首先,`WinMain`是所有Windows应用程序的入口点。在这个函数中,我们定义并...

    基于MFC的简单聊天软件,用C++实现

    **基于MFC的简单聊天软件实现详解** 在IT领域,MFC(Microsoft Foundation Classes)是微软提供的一套C++库,用于简化Windows应用程序的开发。本项目“基于MFC的简单聊天软件”利用C++语言,实现了在局域网内的...

    mfc简单画图(拖动,缩放,移动图形)

    在本文中,我们将深入探讨如何使用MFC(Microsoft Foundation Classes)框架进行简单的图形绘制,并实现图形的拖动、...继续学习MFC的其他特性,如视图、文档/视图架构和打印支持,将使你的应用程序更加强大和灵活。

    MFC打印资料和源代码收集

    在Microsoft ...通过深入研究这些知识点,开发者可以有效地在MFC应用程序中实现高质量的打印功能,无论是简单的文本输出还是复杂的图形和图像处理。同时,源代码示例提供了动手实践的机会,帮助巩固理论知识。

Global site tag (gtag.js) - Google Analytics