vc连接打印机,打印图片

//  打印按钮
void CDlgPrintDlg::OnPrint() 
{
int err = -1;
CPrintDialog dlg(FALSE);

if (!dlg.GetDefaults())
AfxMessageBox(_T("You have no default printer!"));
else
{
// attach to the DC we were given
CDC dc;
dc.Attach(dlg.m_pd.hDC);

// for StartDoc
DOCINFO di;
ZeroMemory(&di, sizeof(di));
di.cbSize = sizeof(di);
di.fwType = 0;
di.lpszDatatype = NULL;
di.lpszDocName = "Printing";
err = StartDoc( dc, &di);
if(err <= 0)
return;
err = StartPage( dc);
if(err <= 0)
return;
dc.SetMapMode(MM_HIENGLISH);
CRect rectPrint(0, 0,
dc.GetDeviceCaps(HORZRES),//返回设备的.以毫米为单位的物理显示宽度 
dc.GetDeviceCaps(VERTRES));//返回设备的.以毫米为单位的物理显示高度
dc.DPtoLP(&rectPrint);//设备物理单位转化为逻辑单位
dc.SetWindowOrg(-2150, -rectPrint.bottom);//设置原点




// Load picture


HBITMAP hBitmap=(HBITMAP)LoadImage(NULL, "D:\\good.bmp", IMAGE_BITMAP, 0,0,LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
if(hBitmap == NULL)
{
err = GetLastError();
}
CBitmap bitmap;     
bitmap.Attach(hBitmap); //关联位图对象 
CDC dcimage; 
err = dcimage.CreateCompatibleDC(&dc); //内存DC
if(err == 0)
return;
// dc.CreateCompatibleDC(&dcimage);
BITMAP bmp; 
err = bitmap.GetBitmap(&bmp); //获取位图信息 
if(err == 0)
return;
dcimage.SelectObject(&bitmap); //选取位图对象 
// err = dc.BitBlt(0,0,bmp.bmWidth,bmp.bmHeight,&dcimage,0,0,SRCCOPY); //显示 
err = dc.StretchBlt(/*dc.m_hDC,*/ 100, 1000,4096,4096*1.5, &dcimage, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
if(err == 0)
{
err = GetLastError();
return;
}
//end load picture

// dc.TextOut(500,500, "Printer:张世龙");

dc.EndPage(); //通知打印机驱动程序页结束
dc.EndDoc();//通知打印机驱动程序打印完毕
DeleteDC(dc.Detach()); 
}


}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值