打印内容绘制类,使用该类可轻松获得当前打印机的HDC,直接在HDC上绘制图像既可,类中集成了打印机的自动检测识别。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 979 2010-09-21 16:47 Printer.h
文件 1657 2010-09-21 16:45 Printer.cpp
----------- --------- ---------- ----- ----
2636 2
#include “Printer.h“
CPrinter::CPrinter(void)
{
m_hdcprinter = NULL;
m_nPrinterWidth = 0;
m_nPrinterHeight = 0;
}
CPrinter::~CPrinter(void)
{ReleasePrinterHDC();}
HDC* CPrinter::GetPrinterHDC()
{
if(m_hdcprinter != NULL)
return &m_hdcprinter;
char szprinter[80];
char *szDevice*szDriver*szOutput;
//定义一个打印作业
static DOCINFO di={sizeof(DOCINFO)“printer“NULL};
m_pDi = &di;
// 得到设备字符串存入数组szprinter中
GetProfileString(“windows““device“““szprinter80);
// 将设备字符串分解
if(NULL!=(szDevice=strtok(szprinter““))&&
NULL!=(szDriver=strtok(NULL““))&&
NULL!=(szOutput=strtok(NULL““)))
{
// 创建一个打印机设备句柄
if((m_hdcprinter = CreateDC(szDriverszDeviceszOutputNULL)) != 0)
{
m_nPrinterWidth = GetDeviceCaps(m_hdcprinterHORZRES);
m_nPrinterHeight = GetDeviceCaps(m_hdcprinterVERTRES);
return &m_hdcprinter;
}
else
{
OutputDebugString(“Get printer HDC fail
“);
return NULL;
}
}else
{
OutputDebugString(“Get printer fail
“);
return NULL;
}
}
void CPrinter::ReleasePrinterHDC()
{
if(m_hdcprinter != NULL)
{
DeleteDC(m_hdcprinter);
m_hdcprinter = NULL;
}
}
bool CPrinter::StartPrint()
{
if(m_hdcprinter == NULL) return false;
if(StartDoc(m_hdcprinterm_pDi)>0) //开始执行一个打印作业
{
StartPage(m_hdcprinter); //打印机走纸开始打印
SaveDC(m_hdcprinter); //保存打印机设备句柄
return true;
}
return false;
}
void CPrinter::EndPrint()
{
RestoreDC(m_hdcprinter-1); //恢复打印机设备句柄
EndPage(m_hdcprinter); //打印机停纸停止打印
EndDoc(m_hdcprinter); //结束一个打印作业
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 979 2010-09-21 16:47 Printer.h
文件 1657 2010-09-21 16:45 Printer.cpp
----------- --------- ---------- ----- ----
2636 2
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)