VC打印机使用 win95环境的下例子测试
最近用到打印机编程,需要实现直接获取打印机打印,打印机获取是根据名字。于是查找了一些资料。下面的例子被转发了多次。
我现在xp下看到win.ini里没有这个打印机的配置了。
于是我引用”
VC枚举本地所有的打印机
http://blog.csdn.net/thanklife/article/details/23482643“的枚举打印机的方法,来获取到LPPRINTER_INFO_2 pPrinters;根据其就得到CreatDC的参数。然后就可以执行后面的打印工作了
。
PS:又查看这篇文章决定测试一下代码,竟然可以工作。那么win.ini里面没有这个打印机的配置项,到底是哪个配置文件里面有这个打印机的配置项?又搜索了一些配置文件,还是没有找到。到底是哪个文件有这个配置项呢?2014-4-16
*************************下面的是转发*********************************************************************
打印机编程(简单) vc++
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; }}
}
VC打印机使用 win95环境的下例子测试相关推荐
- VC++6.0 DDK 环境配置
我目前用的是VC++6.0含SP6中文版+英文版.VC6SP6.ISO (485 MB) Windows 2003 DDK.iso(230 MB) 其实别的版本DDK也可以的,我们要的是一些结构&am ...
- matlab开发环境,Windows 下开源开发环境的搭建
因项目需要在 Windows 下测试开发的程序, 所以研究了一下如何在 Windows 下搭建基于 gcc 的开源开发环境. MSYS2 是 Windows 下的一款开源软件构建和发布平台, 网址为 ...
- MULE ESB环境搭建和例子(通过装插件的方式)
环境搭建和例子: Download mule standaloe from web site: 1. http://www.mulesoft.org/download-mule-esb-comm ...
- 分享实录 | 单人开发场景下的测试环境实践
在软件研发过程中,"测试环境"是部署最频繁.也是开发者使用最频繁的一种运行环境,稳定而易用的测试环境能够极大提高开发者的工作效率和幸福感.为更好的将阿里巴巴在测试环境管理方面的实践 ...
- 单人开发场景下的测试环境实践
在软件研发过程中,"测试环境"是部署最频繁.也是开发者使用最频繁的一种运行环境,稳定而易用的测试环境能够极大提高开发者的工作效率和幸福感.为更好的将阿里巴巴在测试环境管理方面的实践 ...
- 百度安装php环境,Centos下安装类百度文库环境
使用php实现百度文库功能,网上搜索到的方案,实现doc转pdf,pdf转swf,然后显示出来. 这里简单的记录下,[doc转pdf,pdf转swf]两个功能的搭建流程. doc转pdf 使用到下列程 ...
- linux的硬件运行环境,linux下常用的硬件测试软件
Super π(Pi)是Windows底下很受欢迎的测试CPU的工具,因其只用到基础的浮点运算,而不涉及其他的系统库环境,所以,很适合用于排查CPU物理问题.而基于Linux环境,同样也有Super ...
- M1芯片下Fabric测试网络环境配置
M1芯片下Fabric测试网络环境配置 系统配置 系统:Ubuntu 20.04 LTS 内核:Arm64 硬盘大小:10GB 1.技术框架环境搭建 安装Vim sudo apt install -y ...
- VC++开发垃圾文件清理软件(下)
VC++开发垃圾文件清理软件(下) 转自:http://www.cnblogs.com/JczmDeveloper/archive/2013/03/22/2974716.html 1. 绘制对话框的背 ...
- anaconda环境---ubuntu下重装
anaconda环境---ubuntu下重装 @wp20190312 为何重装? 配置一个环境,意外发现conda命令不好用了,提示"找不到conda模块",整个conda虚拟环境 ...
最新文章
- Centos7搭建Jira服务器
- 编程方法课程学习心得
- python数据结构与算法(2)
- 【二叉查找树BST】二叉查找树的基本操作总结
- win10专业版关闭smartscreen
- Tunnel Warfare(HDU1540+线段树+区间合并)
- nfs挂载在centos6后注意
- 第八十五期:一文彻底搞懂cookie和session
- @webservice报错org.apache.cxf.common.i18n.UncheckedException: No operation was found with
- python--一些特性
- mysql自带的全文索引_MySQL创建全文索引分享
- 45本Hadoop、大数据方向书籍,包邮送到家!
- 为你的Android应用构建窗口小部件(App Widget)
- autojs 复制到粘贴板_JS复制到剪贴板示例代码
- 2022-2028年中国工业级无人机行业市场全景调查及投资潜力研究报告
- Atitit 三论”(系统论、控制论、信息论
- HPE Microserver GEN10升级BIOS
- 玩转easyARM imax283A开发版(二),移植NES模拟器并增加按键驱动,让板子可以玩超级玛丽游戏
- [uni-app]h5+app页面背景图全屏显示
- 短链接服务架构设计概览