Printer打印类


打印内容绘制类,使用该类可轻松获得当前打印机的HDC,直接在HDC上绘制图像既可,类中集成了打印机的自动检测识别。
资源截图
代码片段和文件信息
#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


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)