// is a default printer set up? HDC hdcPrinter = dlg.GetPrinterDC(); if (hdcPrinter == NULL) { MessageBox(_T("打印机忙!")); } else { // create a CDC and attach it to the default printer CDC dcPrinter; dcPrinter.Attach(hdcPrinter);
// call StartDoc() to begin printing DOCINFO docinfo; memset(&docinfo, 0, sizeof(docinfo)); docinfo.cbSize = sizeof(docinfo); docinfo.lpszDocName = _T("client print");
// if it fails, complain and exit gracefully if (dcPrinter.StartDoc(&docinfo) < 0) { MessageBox(_T("初始化错误!")); } else { // start a page if (dcPrinter.StartPage() < 0) { MessageBox(_T("不能开始打印页")); dcPrinter.AbortDoc(); } else {
下面在打印图象的代码,打印缓冲区中的bmp图象,打印到纸的2/3大小。 // get the default printer CRect rect; CPrintDialog dlg(FALSE); if (dlg.DoModal() == IDCANCEL) return;// dlg.GetDefaults();
// is a default printer set up? HDC hdcPrinter = dlg.GetPrinterDC(); if (hdcPrinter == NULL) { MessageBox(_T("打印机忙!")); } else { // create a CDC and attach it to the default printer CDC dcPrinter; dcPrinter.Attach(hdcPrinter);
// call StartDoc() to begin printing DOCINFO docinfo; memset(&docinfo, 0, sizeof(docinfo)); docinfo.cbSize = sizeof(docinfo); docinfo.lpszDocName = _T("client print");
// if it fails, complain and exit gracefully if (dcPrinter.StartDoc(&docinfo) < 0) { MessageBox(_T("初始化错误!")); } else { // start a page if (dcPrinter.StartPage() < 0) { MessageBox(_T("不能开始打印页")); dcPrinter.AbortDoc(); } else {
CRect rect;
CPrintDialog dlg(FALSE);
if (dlg.DoModal() == IDCANCEL)
return;// dlg.GetDefaults();
// is a default printer set up?
HDC hdcPrinter = dlg.GetPrinterDC();
if (hdcPrinter == NULL)
{
MessageBox(_T("打印机忙!"));
}
else
{
// create a CDC and attach it to the default printer
CDC dcPrinter;
dcPrinter.Attach(hdcPrinter);
// call StartDoc() to begin printing
DOCINFO docinfo;
memset(&docinfo, 0, sizeof(docinfo));
docinfo.cbSize = sizeof(docinfo);
docinfo.lpszDocName = _T("client print");
// if it fails, complain and exit gracefully
if (dcPrinter.StartDoc(&docinfo) < 0)
{
MessageBox(_T("初始化错误!"));
}
else
{
// start a page
if (dcPrinter.StartPage() < 0)
{
MessageBox(_T("不能开始打印页"));
dcPrinter.AbortDoc();
}
else
{
CGdiObject* pOldFont = dcPrinter.SelectStockObject(SYSTEM_FONT);
int cxPage = dcPrinter.GetDeviceCaps(HORZRES);
int cyPage = dcPrinter.GetDeviceCaps(VERTRES);
int cxInch = dcPrinter.GetDeviceCaps(LOGPIXELSX);
int cyInch = dcPrinter.GetDeviceCaps(LOGPIXELSY); LPBITMAPINFOHEADER lpbi = (LPBITMAPINFOHEADER)m_pb;
LPVOID lpBits = m_pb + sizeof(BITMAPINFOHEADER);
rect.top = rect.left = 0;// rect.bottom = (int)((double)(lpbi->biWidth * cxPage * cyInch)
// / ((double)lpbi->biHeight * cxInch));
// rect.right = cxPage; rect.SetRect(0,0,
dcPrinter.GetDeviceCaps(HORZRES) * 2 / 3,
dcPrinter.GetDeviceCaps(VERTRES) * 2 / 3);//设置范围
rect.bottom = rect.right / 352 * 288;
SYSTEMTIME time;
GetLocalTime(&time);
CString st;
st.Format ("%d年%d月%d日%d时%d分%d秒",time.wYear ,time.wMonth ,time.wDay ,
time.wHour ,time.wMinute ,time.wSecond );
CFont *oldfont;
CFont font; font.CreateFont(
50, // nHeight
100, // nWidth
0, // nEscapement
0, // nOrientation
FW_NORMAL, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
"Arial"); // lpszFacename
oldfont=dcPrinter.SelectObject(&font);
dcPrinter.TextOut (0,0,st);
dcPrinter.SelectObject (oldfont);
font.DeleteObject();
DrawDibDraw(hdib,
dcPrinter.GetSafeHdc (),
200,200,
rect.right + 200 ,
rect.bottom + 200,
(BITMAPINFOHEADER *)lpbi,
lpBits,
0,0,
lpbi->biWidth,
lpbi->biHeight,
DDF_BACKGROUNDPAL);
dcPrinter.EndPage();
dcPrinter.EndDoc();
dcPrinter.SelectObject(pOldFont);
// get the default printer
CRect rect;
CPrintDialog dlg(FALSE);
if (dlg.DoModal() == IDCANCEL)
return;// dlg.GetDefaults();
// is a default printer set up?
HDC hdcPrinter = dlg.GetPrinterDC();
if (hdcPrinter == NULL)
{
MessageBox(_T("打印机忙!"));
}
else
{
// create a CDC and attach it to the default printer
CDC dcPrinter;
dcPrinter.Attach(hdcPrinter);
// call StartDoc() to begin printing
DOCINFO docinfo;
memset(&docinfo, 0, sizeof(docinfo));
docinfo.cbSize = sizeof(docinfo);
docinfo.lpszDocName = _T("client print");
// if it fails, complain and exit gracefully
if (dcPrinter.StartDoc(&docinfo) < 0)
{
MessageBox(_T("初始化错误!"));
}
else
{
// start a page
if (dcPrinter.StartPage() < 0)
{
MessageBox(_T("不能开始打印页"));
dcPrinter.AbortDoc();
}
else
{
CGdiObject* pOldFont = dcPrinter.SelectStockObject(SYSTEM_FONT);
int cxPage = dcPrinter.GetDeviceCaps(HORZRES);
int cyPage = dcPrinter.GetDeviceCaps(VERTRES);
int cxInch = dcPrinter.GetDeviceCaps(LOGPIXELSX);
int cyInch = dcPrinter.GetDeviceCaps(LOGPIXELSY); LPBITMAPINFOHEADER lpbi = (LPBITMAPINFOHEADER)m_pb;
LPVOID lpBits = m_pb + sizeof(BITMAPINFOHEADER);
rect.top = rect.left = 0;// rect.bottom = (int)((double)(lpbi->biWidth * cxPage * cyInch)
// / ((double)lpbi->biHeight * cxInch));
// rect.right = cxPage; rect.SetRect(0,0,
dcPrinter.GetDeviceCaps(HORZRES) * 2 / 3,
dcPrinter.GetDeviceCaps(VERTRES) * 2 / 3);//设置范围
rect.bottom = rect.right / 352 * 288;
SYSTEMTIME time;
GetLocalTime(&time);
CString st;
st.Format ("%d年%d月%d日%d时%d分%d秒",time.wYear ,time.wMonth ,time.wDay ,
time.wHour ,time.wMinute ,time.wSecond );
CFont *oldfont;
CFont font; font.CreateFont(
50, // nHeight
100, // nWidth
0, // nEscapement
0, // nOrientation
FW_NORMAL, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
"Arial"); // lpszFacename
oldfont=dcPrinter.SelectObject(&font);
dcPrinter.TextOut (0,0,st);
dcPrinter.SelectObject (oldfont);
font.DeleteObject();
DrawDibDraw(hdib,
dcPrinter.GetSafeHdc (),
200,200,
rect.right + 200 ,
rect.bottom + 200,
(BITMAPINFOHEADER *)lpbi,
lpBits,
0,0,
lpbi->biWidth,
lpbi->biHeight,
DDF_BACKGROUNDPAL);
dcPrinter.EndPage();
dcPrinter.EndDoc();
dcPrinter.SelectObject(pOldFont);
}
}
}