分享
 
 
 

VC下打印机的使用

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

VC 5.0是开发Windows 95下应用程序的强大工具。本文将通过一

个具体实例讨论用VC打印文字和图形的一些技术。在Windows 95下,

显示器和打印机、绘图仪都被视为输出设备。系统默认的输出设备是

显示器。要使用打印机,首先需要创建一个指向打印机的设备环境句柄,

然后通过该句柄调用相关的绘图函数把所需的文字和图形输出至打印

机上。当打印结束后,删除这个设备环境句柄即可。

一、技术细节

当我们在Windows95下安装好打印机后,总是需要设置一个为默认

打印机,在Windows95的启动配置文件WIN.INI中[window]段中列出了

带有关键字device的默认打印机。如果在文件WIN.INI中有如下几行:

[windows]

[其他程序行]

device=EPSON LQ-1600K,EPSON24,LPT1:

在device后的字符串中就包含了系统中默认的打印机的三个重要

属性.它们依次是打印机的设备名是LQ-1600K,驱动程序名是EPSON24,

输出端口为LPT1。在程序中我们可调用API函数GetProfileString从

WIN.INI文件中获得这个设备字符串。再将这个设备字符串进行分解,

获得这三个属性,作为参数用API函数CreateDC调用。如果调用成功,

则为默认打印机创建一个设备环境句柄,否则返回一个空值(NULL)。

CreateDC函数的原形如下:

HDC CreateDC(

LPCTSTR lpszDriver,

LPCTSTR lpszDevice,

LPCTSTR lpszOutput,

CONST DEVMODE *lpinitData

);

二、程序代码及说明

新建一个名为Test的工程,窗体类型为对话框(Dialog based)

模式。在窗体中加入一个按钮(Button),设置这个Button的属性:

ID=IDC_PRINT,CAPTION="打印"。在类向导中找到该Button

的单击事件对应的消息BN_CLICKED,增加其成员函数OnPrint。

在TestDlg.cpp文件中找到OnPrint函数并作如下改动。

void CTestDlg::OnPrint()

{

// 增加如下代码

char szprinter[80];

char *szDevice,*szDriver,*szOutput;

HDC hdcprint; // 定义一个设备环境句柄

//定义一个打印作业

Static DOCINFO di={sizeof(DOCINFO),"printer",NULL};

// 得到设备字符串存入数组szprinter中

GetProfileString("windows","device",",,,",szprinter,80);

// 将设备字符串分解

if(NULL!=(szDevice=strtok(szprinter,","))&&

NULL!=(szDriver=strtok(NULL,","))&&

NULL!=(szOutput=strtok(NULL,",")))

// 创建一个打印机设备句柄

if((hdcprint=CreateDC(szDriver,szDevice,szOutput,NULL))!=0)

{

if(StartDoc(hdcprint,&di)>0) //开始执行一个打印作业

{

StartPage(hdcprint); //打印机走纸,开始打印

SaveDC(hdcprint); //保存打印机设备句柄

// 输出一行文字

TextOut(hdcprint,1,1,"这是一个例子",12);

// 输出一条直线

MoveToEx(hdcprint,20,20,NULL);

LineTo(hdcprint,120,120);

RestoreDC(hdcprint,-1); //恢复打印机设备句柄

EndPage(hdcprint); //打印机停纸,停止打印

EndDoc(hdcprint); //结束一个打印作业

MessageBox("打印完毕!","提示",MB_ICONINFORMATION);

}

// 用API函数DeleteDC销毁一个打印机设备句柄

DeleteDC(hdcprint);

}

else

{

MessageBox("没有默认打印机,或者没有安装打印机!");

return;

}

}

编译运行程序,出现如下窗体:

在窗体中按下"打印"按钮,则打印机上会输出一行字"这是一个例子"。

然后再输出一条直线。在程序中使用了许多API函数,这些函数的具体用

法在VC5.0提供的帮助文件中都有详细的说明,有兴趣的读者不妨看一看。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有