社区
新手乐园
帖子详情
c++ 如何使用打印机
fingerling6
2009-04-18 01:03:14
如题
...全文
4648
3
打赏
收藏
c++ 如何使用打印机
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ericming200409
2009-04-18
打赏
举报
回复
mfc
my9011
2009-04-18
打赏
举报
回复
VisualC6.0是开发Windows应用强大工具但是要通过它实现打印功能直是初学者个难点经常有朋友询问如何在VC中实现打印功能他们往往感到在MFC提供框架内实现这个问题很复杂不知道如何下手本例针对这个问题介绍种简单思路方法实现文字串打印功能,读者朋友可以在此基础上稍微改动下就可以实现文件、图像打印功能
、实现思路方法
在Windows操作系统下显示器、打印机和绘图仪都被视为输出设备正常情况下系统默认输出设备是显示器要使用打印机,首先需要创建个指向打印机设备环境句柄,然后通过该句柄相关绘图把所需文字和图形输出至打印机上当打印结束后,删除这个设备环境句柄即可
当Windows系统中安装好打印机后系统总是自动设置个打印机为系统默认打印机,在Windows启动配置文件Win.ini中[window]段中列出了带有关键字device默认打印机下面是某机器中Win.ini中[Windows]字段内容:
[windows]
load=
run=
NullPort=None
device=HPLaserJet4050(computer000),HPBFDB1,LPT1
在上述关键字device后串中包含了系统中默认打印机 3个重要属性它们依次是打印机设备名HPLaserJet4050(computer000)驱动名是HPBFDB1输出端口为LPT1
为了操纵系统默认打印机实现打印功能在中可APIGetProfileString()从Win.ini文件中获得device这个设备串该原型为:DWORDGetProfileString(LPCTSTRlpAppName,LPCTSTRlpKeyName,LPCTSTRlpDefault,LPTSTRlpReturnedString,DWORDnSize)中lpAppName参数为所要检索Win.ini文件中字段名;lpKeyName为字段中关键字名;lpDefault为默认串;lpReturnedString为检索到串如果该没有从lpKeyName关键字中检索到相应串则kpRetrunedString返回默认串lpDefault;nSize为返回串长度
获取上述串后再使用strtok()将该串进行分解,获得和打印机相关 3个属性,作为APICreateDC()创建打印机设备环境句柄参数CreateDC()如果成功,则为默认打印机创建个设备环境句柄,否则返回个空值(NULL)该原形为:HDCCreateDC(LPCTSTRlpszDriver,LPCTSTRlpszDevice,LPCTSTRlpszOutput,CONSTDEVMODE*lpinitData)该前 3个参数恰好对应打印机 3个属性最后个参数为化打印机驱动数据般情况下该参数设置为NULL就可以了
在具体打印过程中StartDoc(HDChdc,CONSTDOCINFO*lpdi)来开始个打印任务其中参数lpdi为个指向DOCINFO结构指针该结构如下:
typedefstruct{
cbSize;//结构尺寸大小;
LPCTSTRlpszDocName;//文档名字;
LPCTSTRlpszOutput;//输出文档名般情况下为NULL;
LPCTSTRlpszDatatype;//用来记录打印过程数据类型般情况下为NULL;
DWORDfwType;//用来支持打印工作额外信息般情况下为NULL;
}DOCINFO,*LPDOCINFO;
开始个打印任务后再StartPage(hdcpr)让打印机走纸通知打印机有文档将要打印;接下来工作就是输出数据了这部分工作对于开发人员来说就象往计算机屏幕上输出文字、图像样容易只不过是计算机根据当前设备环境句柄自动将数据输出到打印机罢了数据打印完后需要作些善后处理工作使用RestoreDC(hdcpr,-1)恢复打印机设备句柄、EndPage(hdcpr)让打印机停止打印最后EndDoc(hdcpr)结束上述打印作业 [Page]
2、编程步骤
1、启动VisualC6.0新建个基于对话框应用Test在对话框窗体中加入个按钮(Button),设置这个Button属性:ID=IDC_PRINT,CAPTION=\"打印\";
2、使用ClassWizard类向导为该按钮添加个鼠标单击处理OnPr()
3、修改TestDlg.cpp文件中OnPr();
4、添加代码编译运行 3、代码
////////////////////////////////////////////
voidCTestDlg::OnPr
{
charszprer[80];
char*szDevice,*szDriver,*szOutput;
HDChdcpr;//定义个设备环境句柄
//定义个打印作业
DOCINFOdi={(DOCINFO),\"prer\",NULL};
//得到设备串存入szprer中
GetProfileString(\"windows\",\"device\",\",,,\",szprer,80);
//将设备串分解
(NULL!=(szDevice=strtok(szprer,\",\"))&&NULL!=(szDriver=strtok(NULL,\",\"))&&
NULL!=(szOutput=strtok(NULL,\",\")))
//创建个打印机设备句柄
((hdcpr=CreateDC(szDriver,szDevice,szOutput,NULL))!=0)
{
(StartDoc(hdcpr,&di)>0)//开始执行个打印作业
{
StartPage(hdcpr);//打印机走纸,开始打印
SaveDC(hdcpr);//保存打印机设备句柄
//输出行文字
TextOut(hdcpr,1,1,\"热烈祝贺编程例子出版发行!\",16);
RestoreDC(hdcpr,-1);//恢复打印机设备句柄
EndPage(hdcpr);//打印机停纸,停止打印
EndDoc(hdcpr);//结束个打印作业
MessageBox(\"打印完毕!\",\"提示\",MB_ICONINFORMATION);
}
//用APIDeleteDC销毁个打印机设备句柄
DeleteDC(hdcpr);
}
{
MessageBox(\"没有默认打印机,或者没有安装打印机!\");
;
}
}
jackyjkchen
2009-04-18
打赏
举报
回复
看Windows程序设计吧,一两句话貌似说不清楚,除非你用MFC
C++
Builder实现调用
打印机
打印图片
C++
Builder实现调用
打印机
打印图片
C++
获取
打印机
状态和驱动信息
C++
获取
打印机
状态和驱动信息,另外博客上还有一个我写的,一样的,这里只是求支持,让我有点分下载别的东西 https://blog.csdn.net/weixin_40352264/article/details/87855280
C++
Builder Printer
打印机
程序
由C++BUILDER开发的打印程序,经过测试,也可以通过VC调用
C++
编写的连接
打印机
程序。
用
C++
编写,利用MSBCODE控件连接
打印机
。要用到
打印机
程序或者练习连接
打印机
的朋友可以借鉴一下。
C++
虚拟
打印机
半开源代码,可以参考, .nsi 安装文件的编写方法(可以通过NSIS软件运行.nsi安装文件),此软件还可以作为免费的虚拟
打印机
使用
。
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章