VisualC++6.0编程实现打印功能

VisualC++6.0编程实现打印功能,第1张

VisualC++6.0编程实现打印功能,第2张

Visual C++6.0是开发Windows应用程序的有力工具,但通过它实现程序的打印功能一直是初学者的难点。经常有朋友问如何在VC中实现打印功能,经常觉得在MFC提供的框架内实现这个问题比较复杂,不知道如何下手。本例针对这一问题,介绍了一种简单的实现文本字符串打印功能的方法。读者朋友可以在此基础上做一些改动,实现文档和图像的打印功能。

一、实施方法

在Windows操作系统下,显示器、打印机和绘图仪都被视为输出设备。正常情况下,系统的默认输出设备是显示器。要使用打印机,首先需要创建一个指向打印机的设备环境句柄,然后通过句柄调用相关的绘图函数,将所需的文本和图形输出到打印机。打印完成后,删除设备环境句柄。

当打印机安装在Windows系统中时,系统总是自动将打印机设置为系统的默认打印机。带有关键字device的默认打印机列在Windows的启动配置文件Win.ini的[window]部分。以下是某机Win.ini中[Windows]字段的内容:

[windows]
load =
run =
NullPort = None
device = HP LaserJet 4050(computer 000),HPBFDB1,LPT1

在上述关键字device后面的字符串中,有系统中默认打印机的三个重要属性。它们是打印机的设备名称HP LaserJet 4050(computer000)、驱动程序名称HPBFDB1和输出端口LPT1。

为了操作系统的默认打印机,实现程序的打印功能,可以在程序中调用API函数GetProfileString()从Win.ini文件中获取设备字符串。这个函数的原型是DWORD getProfileString(LPCTSTR LP appname,LPCTSTR lpKeyName,LPCTSTR lpDefault,LPTSTR lpReturnedString,DWORD nSize).函数中的lpAppName参数是要检索的Win.ini文件中的字段名;LpKeyName是字段中的关键字名称;Lp是LP默认字符串;LpReturnedString是检索到的字符串。如果函数没有从lpKeyName关键字中检索到相应的字符串,kpRetrunedString返回默认字符串lpDefault;NSize是返回字符串的长度。

获得上述字符串后,使用strtok()函数对字符串进行分解,得到与打印机相关的三个属性,作为API函数CreateDC()的参数,为默认打印机创建一个设备环境句柄。如果CreateDC()函数调用成功,它将为默认打印机创建一个设备环境句柄,否则将返回一个空值(NULL)。这个函数的原型是HDC CreateDC (lpctstr lpszdriver,lpctstr lpszdevice,lpctstr lpszoutput,const devmode * lpinitdata)。这个函数的前三个参数正好对应打印机的三个属性,最后一个参数是初始化打印机驱动的数据。通常,将该参数设置为NULL就足够了。

在具体的打印过程中,调用int start doc (HDC HDC,const DOCINFO * lpdi)函数启动一个打印任务,其中参数lpdi是指向DOCINFO结构的指针,如下:

typedef struct {
int cbSize;//结构的大小;
LPCTSTR lpszDocName;//文档的名称;
LPCTSTR lpsz output;//输出文档名,通常为空;;
LPCTSTR lpsz datatype;//用于记录打印过程的数据类型,通常为NULL;
DWORD fwType;//用于支持打印工作的附加信息,通常为空;;
} DOCINFO,* LPDOCINFO

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » VisualC++6.0编程实现打印功能

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情