社区
非技术区
帖子详情
如何在VC下使用打印机(即调用什么函数实现打印功能?)
vov
2002-03-18 02:47:57
同主题
...全文
289
2
打赏
收藏
如何在VC下使用打印机(即调用什么函数实现打印功能?)
同主题
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chenzhenbest
2002-03-18
打赏
举报
回复
CViwe::OnPreparePringing
神医CL
2002-03-18
打赏
举报
回复
这是我从网上看到的
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;
}
}
不能声明为虚
函数
的
函数
:
使用
虚
函数
时,有两点要注意: (1)只能用virtual声明类的成员
函数
,使它成为虚
函数
,而不能将类外的普通
函数
声明为虚
函数
。因为虚
函数
的作用是允许在派生类中对基类的虚
函数
重新定义。显然,它只能用于类的继承层次结构中。 (2)一个成员
函数
被声明为虚
函数
后,在同一类族中的类就不能再定义一个非virtual的但与该虚
函数
具有相同的参数(包括个数和类型)和
函数
返回值类型的同名
函数
。
什么
函数
不能声明为虚
函数
一、首先回顾下什么是虚
函数
及其作用,以便更好理解什么
函数
不能声明或定义为虚
函数
: 1. 定义: 虚
函数
必须是基类的非静态成员
函数
,其访问权限可以是protected或public,在基类的类定义中定义虚
函数
的一般形式: virtual
函数
返回值类型 虚
函数
名(形参表) {
函数
体 } 2. 作用: 虚
函数
的作用是
实现
动态联编,也就是在程序的运行阶段动态地选择合适的成员
函数
,在定义...
【C++】C++中哪些
函数
不能被声明为虚
函数
什么
函数
不能被声明为虚
函数
? 1、普通
函数
(非类成员
函数
); 2、构造
函数
; 3、内联
函数
; 4、静态成员
函数
; 5、友元
函数
; 6、不会被继承的基类的析构
函数
(没有必要)。 1、普通
函数
(非类成员
函数
)不能被声明为虚
函数
; 注意:只有类的成员
函数
才有可能被声明为虚
函数
。 因为普通
函数
(非成员
函数
)只能被重载,不能被重写。声明为虚
函数
也没有什么意思,因此编译器会在编译时绑定
函数
。 2、构造
函数
不能被声明为虚
函数
; 首先说下什么是构造
函数
,构造
函数
是用来初始化对象的。虚
函数
的主要作用是
实现
多态,多态是依托于类
非技术区
15,445
社区成员
58,111
社区内容
发帖
与我相关
我的任务
非技术区
C/C++ 非技术区
复制链接
扫一扫
分享
社区描述
C/C++ 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章