16,472
社区成员
发帖
与我相关
我的任务
分享
void CPrintfFileTextDlg::OnBnClickedButton1()
{
CPrintDialog printDlg(FALSE);
//获取默认打印属性,不显示打印窗口
//printDlg.GetDefaults();
//或从用户处获取
if (printDlg.DoModal() == IDCANCEL)
return;
CDC dc;
if (!dc.Attach(printDlg.GetPrinterDC()))
{
MessageBox(_T("没有找到打印机!"),_T("提示"));
return;
}
dc.m_bPrinting = TRUE;
DOCINFO di;
//初始化打印文档详细信息
::ZeroMemory (&di, sizeof (DOCINFO));
di.cbSize = sizeof (DOCINFO);
di.lpszDocName = _T("标签打印");
BOOL bPrintingOK = dc.StartDoc(&di); // 开始新的打印作业
//获取打印范围 并存储在 CPrintInfo 对象
CPrintInfo Info;
Info.SetMaxPage(1); // 只有一页//获取所有像素数
int maxw = dc.GetDeviceCaps(HORZRES);
int maxh = dc.GetDeviceCaps(VERTRES);
//设置纸张打印大小
Info.m_rectDraw.SetRect(0, 0, maxw, maxh);
//
for (UINT page = Info.GetMinPage(); page <= Info.GetMaxPage() &&
bPrintingOK; page++)
{
dc.StartPage(); //开始新页面
Info.m_nCurPage = page;
CImage Img;
Img.Load(_T("d://22.png"));
HBITMAP hBitm;
hBitm=Img.Detach();//分离位图句柄
CBitmap bitmap;
bitmap.Attach(hBitm);//附加位图句柄
BITMAP bm;
bitmap.GetBitmap(&bm);
int w = bm.bmWidth;
int h = bm.bmHeight;
//创建内存设备上下文
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap *pBmp = memDC.SelectObject(&bitmap);
memDC.SetMapMode(dc.GetMapMode());
dc.SetStretchBltMode(HALFTONE);
//现在拉伸到页面的最大宽度
dc.StretchBlt(0, 0, maxw, maxh, &memDC, 0, 0, w, h, SRCCOPY);
// 清理
memDC.SelectObject(pBmp);
bPrintingOK = (dc.EndPage() > 0); // 结束页
}
if(bPrintingOK)
dc.EndDoc(); // 结束打印作业
else
dc.AbortDoc(); //中止卡