VC中的图象打印问题

我终于完成了对图象的打印操作,在此,将其全部奉上,以满足与我有同样经历的朋友的需要.在这里,我要特别感谢VCKbase中的LiuRong! 另外,由于这是我的第一篇文章 ,难免有不尽人意之处,欢迎大家提出批评和建议,先谢谢啦。

VC中的图象打印一般有两种方法:

一、选定打印设备环境后,用DrawState可以将图象打印出来,这可以用于资源中图象 的打印输出,比较简单,不再多说.

二、窗口内容的打印,这是本文的重点,也是我遇到的最大的问题,下面我主要介绍 这种打印;

1、工程简单介绍

建立一个基于对话框的工程,对话框没有标题栏,在其客户区画图,根据用户的需要 将客户区的内容打印出来;

2、需要解决的问题

(1)、由于对话框没有标题栏,菜单栏和其他按钮,而要让用户在需要的时候打印其内 容,可以定义一个热键,文中定义的热键是(Ctrl+P),

(2)、由于是基于对话框的工程,应用程序框架没有提供打印功能,这就需要我们自己 建立一个打印设备环境,可以用CDC的成员函数CreateDC来实现 ,但用此法时,必须事先 知道打印机名称和打印机驱动程序名称,考虑到这种限制,笔者用了另外一种方法,具体 方法请看工程Print函数中的代码;

(3)、打印的原理:建立内存设备环境,将对话框的的内容拷贝到内存设备环境,然后 又将内存设备环境中的内容拷贝到打印设备环境;

(4)、笔者在实验时发现,"在打印的时候在建立内存设备环境,然后将对话框的 的内容拷贝到内存设备环境,再将内存设备环境中的内容拷贝到打印设备环境"存在 一个问题 ,那就是打印时弹出的打印对话框要覆盖我们建立的对话框,这样实际拷贝的 内存设备环境中的内容是没有被覆盖的部分,针对这种情况,笔者用了了一个成员函数来 存储内存设备环境 ,而且,在OnPaint中(也就是每次重画时)将对话框中的内容重新拷贝 到内存设备环境中,这就是 LiuRong 给我的启发,因为我原来打印出来的只是一个黑色 矩形框,谢谢你!

(5)、该工程还实现了无标题对话框的拖动!

三、使用方法

使用时,只需在OnPaint的"显示图片"部分画图就可以啦,一定要在拷 贝到内存设备环境中之前画图;

好啦,具体实现,请看工程文件中代码(在vc6,XP下打印成功),感谢VCKbase以 及LiuRong!

下载源代码:http://www.vckbase.com/code/downcode.asp?id=2313

时间: 2024-11-03 10:58:13

VC中的图象打印问题的相关文章

visio所做的图在VC中展示出来

问题描述 visio所做的图在VC中展示出来 我正在做visio所做的图在VC中展示出来,并且能够实时操控其颜色的变化和图形变化.

VC++中调用word进行word表格的填写

在实际应用中,编程者往往喜欢程序能自动生成word说明文档,说明程序运 行的状况或运行的结果:或者程序能提取数据库的内容生成word表格,使用户能 方便的查看和修改,打印.但是VC++中调用word的确不容易,特别是对word中各 种函数的使用,本文以作者的工作经验详细介绍一下如何调用word和进行word表 格的填写,有同样需求的编友也可查看一下MSDN中的Automation Microsoft Office 97 and Microsoft office 2000.下面介绍以Microso

VC中的界面美化

本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者.读者最好具有以下VC基础: 1. 大致了解MFC框架的基本运作原理: 2. 熟悉Windows消息机制,熟悉MFC的消息映射和反射机制: 3. 熟悉OOP理论和技术: 本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助.  正文1. 美化界面之开题篇相信使用过<金山毒霸>.<瑞星杀毒>软件的读者应该还记得它们的精美界面:     图1 瑞星杀毒软件的精美界面程序的功能如何如何强大是一回事,它的用户界面

VC++中利用MSXML解析XML文档

c++|xml 四.程序实现 下面通过一个具体的实例来说明在VC++中如何利用MSXML解析XML文档. (1)源XML文档(xmlfile.xml)如下: <?xml version="1.0" encoding="GB2312"?> <Device id="10041" name="设备1"> <Type>13</Type> <TypeName>保护</Ty

VC中基于Windows的精确定时

在工业生产控制系统中,有许多需要定时完成的操作,如定时显示当前时间,定时刷新屏幕上的进度条,上位 机定时向下位机发送命令和传送数据等.特别是在对控制性能要求较高的实时控制系统和数据采集系统中,就更需要精确定时操作. 众所周知,Windows 是基于消息机制的系统,任何事件的执行都是通过发送和接收消息来完成的. 这样就带来了一些问题,如一旦计算机的CPU被某个进程占用,或系统资源紧张时,发送到消息队列 中的消息就暂时被挂起,得不到实时处理.因此,不能简单地通过Windows消息引发一个对定时要求

在Word 2013中使用草稿品质打印文档

用户可以在Word2013中使用草稿品质打印文档,以便能够以较低的分辨率打印Word文档,从而实现降低耗材费用.提高打印速度的目的,具体操作步骤如下所述: 第1步,打开Word2013文档窗口,依次单击"文件"→"选项"命令,如图2013041819所示. 图2013041819 选择"选项"命令 第2步,打开"Word选项"对话框,切换到"高级"选项卡.在"打印"区域选中"使

在Word 2010文档中使用逆序打印页面

所谓逆序打印即从Word文档页面的尾部开始打印文档,直至Word文档页面头部 .通过逆序打印方式打印完成的纸质文稿将按正常页码序排列,这对于页数较多 的Word文档而言更易整理纸质文稿.在Word 2010文档中设置逆序打印页面的步骤 如下所述: 第1步,打开Word 2010文档窗口,依次单击"文件 "→"选项"命令,如图2011121301所示. 图 2011121301 单击"选项"命令 第2步,打开"Word选项"对话

在Word 2007中使用草稿品质打印文档

用户可以在Word2007中使用草稿品质打印文档,以便能够以较低的分辨率打印Word文档,从而实现降低耗材费用.提高打印 速度的目的,具体操作步骤如下所述: 第1步,打开Word2007文档窗口,依次单击"Office按钮"→"Word选项"按钮, 如图2012040211所示. 图2012040211 单击"Word选项"按钮 第2步,打开"Word选项"对话框,切换到"高级"选项卡. 在"打印

VC中多语言菜单的实现

软件的国际化不可避免.一种软件可能被很多国家的人使用,如给您的软件加上多种语言的菜单,不但给使用者带来很多方便,也为您的软件的推广带来很多便利.比如给您开发的中文软件,加上一个英语或日语菜单,对母语为英语和日语的朋友将会带来很多便利. VC中实现多语菜单非常容易,下面以英汉对照菜单为例说明多语菜单实现的方法.  一.建立工程项目文件 选择语言为中文,其余采用默认,添加中英文切换菜单IDD_MENU_CHANGE 二.用文本形式打开资源文件,找到IDR_MAINFRAME的菜单文本内容如下: ID