資源簡介
打印內容繪制類,使用該類可輕松獲得當前打印機的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\n“);
return?NULL;
}
}else
{
OutputDebugString(“Get?printer?fail\n“);
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
- 上一篇:TV盒子助手.zip
- 下一篇:3GPP標準協議
評論
共有 條評論