求可用的mfc调用打印机源码,可用加分
答案:2 悬赏:80 手机版
解决时间 2021-01-20 17:57
- 提问者网友:沉默菋噵
- 2021-01-20 11:27
求可用的mfc调用打印机源码,可用加分
最佳答案
- 五星知识达人网友:从此江山别
- 2021-01-20 12:13
手头上的一段简单的打印控件的代码给你参考下
CDC memdc;
CClientDC clientdc(&m_detailsList);
CBitmap bitmap;
CRect rect;
memdc.CreateCompatibleDC(&clientdc);
m_detailsList.GetClientRect(rect);
bitmap.CreateCompatibleBitmap(&clientdc,rect.Width(),rect.Height());
memdc.SelectObject(&bitmap);
if (!memdc.BitBlt(0,0,rect.Width(),rect.Height(),&clientdc,0,0,SRCCOPY))
{
return;
}
CPrintDialog dlg(FALSE);
if (dlg.DoModal()==IDOK)
{
LPDEVMODE lpDevMode;
if(AfxGetApp()->GetPrinterDeviceDefaults(&dlg.m_pd))
{
if(lpDevMode = (LPDEVMODE)GlobalLock(dlg.m_pd.hDevMode))
{
lpDevMode->dmOrientation = DMORIENT_LANDSCAPE;//水平
}
GlobalUnlock(dlg.m_pd.hDevMode);
}
CDC pritdc;
pritdc.Attach(dlg.CreatePrinterDC());
pritdc.SetViewportOrg(10,10);
int screenx,screeny;
int printx,printy;
double ratex,ratey;
screenx=clientdc.GetDeviceCaps(LOGPIXELSX);
screeny=clientdc.GetDeviceCaps(LOGPIXELSY);
printx=pritdc.GetDeviceCaps(LOGPIXELSX);
printy=pritdc.GetDeviceCaps(LOGPIXELSY);
ratex=(double)printx/screenx-1.22;
ratey=(double)printy/screeny;
DOCINFOA da;
da.cbSize=sizeof(DOCINFOA);
da.fwType=0;
da.lpszDatatype=NULL;
da.lpszDocName="测试";
da.lpszOutput=NULL;
char ar[]="打印测试";
StartDoc(pritdc,(const DOCINFO *)&da);
StartPage(pritdc);
if (!pritdc.StretchBlt(0,56*ratey,(int)(rect.Width()*ratex),(int)(rect.Height()*ratey),&memdc,0,24,rect.Width(),rect.Height(),SRCCOPY))
{
return;
}
EndPage(pritdc);
EndDoc(pritdc);
}
bitmap.Detach();追问请问您知道如何用打印机打印png图片吗?追答这个真没试过。。。我的工程给财务用的,一般都是绘制表格。。。。
CDC memdc;
CClientDC clientdc(&m_detailsList);
CBitmap bitmap;
CRect rect;
memdc.CreateCompatibleDC(&clientdc);
m_detailsList.GetClientRect(rect);
bitmap.CreateCompatibleBitmap(&clientdc,rect.Width(),rect.Height());
memdc.SelectObject(&bitmap);
if (!memdc.BitBlt(0,0,rect.Width(),rect.Height(),&clientdc,0,0,SRCCOPY))
{
return;
}
CPrintDialog dlg(FALSE);
if (dlg.DoModal()==IDOK)
{
LPDEVMODE lpDevMode;
if(AfxGetApp()->GetPrinterDeviceDefaults(&dlg.m_pd))
{
if(lpDevMode = (LPDEVMODE)GlobalLock(dlg.m_pd.hDevMode))
{
lpDevMode->dmOrientation = DMORIENT_LANDSCAPE;//水平
}
GlobalUnlock(dlg.m_pd.hDevMode);
}
CDC pritdc;
pritdc.Attach(dlg.CreatePrinterDC());
pritdc.SetViewportOrg(10,10);
int screenx,screeny;
int printx,printy;
double ratex,ratey;
screenx=clientdc.GetDeviceCaps(LOGPIXELSX);
screeny=clientdc.GetDeviceCaps(LOGPIXELSY);
printx=pritdc.GetDeviceCaps(LOGPIXELSX);
printy=pritdc.GetDeviceCaps(LOGPIXELSY);
ratex=(double)printx/screenx-1.22;
ratey=(double)printy/screeny;
DOCINFOA da;
da.cbSize=sizeof(DOCINFOA);
da.fwType=0;
da.lpszDatatype=NULL;
da.lpszDocName="测试";
da.lpszOutput=NULL;
char ar[]="打印测试";
StartDoc(pritdc,(const DOCINFO *)&da);
StartPage(pritdc);
if (!pritdc.StretchBlt(0,56*ratey,(int)(rect.Width()*ratex),(int)(rect.Height()*ratey),&memdc,0,24,rect.Width(),rect.Height(),SRCCOPY))
{
return;
}
EndPage(pritdc);
EndDoc(pritdc);
}
bitmap.Detach();追问请问您知道如何用打印机打印png图片吗?追答这个真没试过。。。我的工程给财务用的,一般都是绘制表格。。。。
全部回答
- 1楼网友:青灯有味
- 2021-01-20 13:53
源码。你确定。一般MFC调用的叫DC追问你知道图片怎么打印吗???不是bmp格式的追答图片的打印是以像素为基础的,叫点阵。
你调用DC就可以了。不用去搞清楚哪些。研发一台打印机没几年功夫搞不定的。你离研发层有5楼那么高。
你调用DC就可以了。不用去搞清楚哪些。研发一台打印机没几年功夫搞不定的。你离研发层有5楼那么高。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯