QQ登录

只需一步,快速开始

311上位机VC MFC实现整个程序界面的打印功能

[ 复制链接 ]

311上位机VC MFC实现整个程序界面的打印功能

311上位机VC MFC实现整个程序界面的打印功能

整个程序界面的打印功能
功能展示
有时我们得打印整个程序的界面,如果界面上的按钮,编辑框内的数据都得打印出来,我们当前例程实现 这一功能,点击<打印整个界面>会弹出打印对话框,点击对话框内的确认,可以打印出整个例程的界面,包括我们在编辑框手动输入的内容;

要点提示
要实现程序界面的打印,首先得获得打印机的设备上下文CDC对象,再将程序界面存入位图结构中,最后调用打印机CDC对象的StretchBlt函数便可;
打印机CDC对象可以通过打印对话框的GetPrinterDC()获取;
将程序界面存入位图结构中,首先定义创建一与程序设备上下文兼容的CDC对象如果memDC,再创建 与程序设备上下文兼容的位图对象bitmap,将其载入memDC中,最后调用memDC的BitBlt将对话框绘制在位图中;

实现功能
1.新建基于对话框的应用程序
2.添加一些编辑框,文件等控件,作为测试用,再添加 一按钮<打印 整个界面>用于打印整个程序界面用,关联按钮的点击函数
void CGkbc8Dlg::OnButton1()
{
CClientDC dc(this);
CDC memDC;
CRect rect;
memDC.CreateCompatibleDC(&dc);
this->GetClientRect(rect);

CBitmap bitmap;
bitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());
CBitmap * oldbitmap = memDC.SelectObject(&bitmap);
memDC.BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);

CPrintDialog m_printdlg( FALSE);//获取打印机DC
if (m_printdlg.DoModal()==IDOK)
{
CDC dc1;
dc1.Attach(m_printdlg.GetPrinterDC());
int screenx,screeny;
int printx,printy;
double ratex,ratey;
//确定打印机与屏幕的像素比率
screenx = dc.GetDeviceCaps(LOGPIXELSX);
screeny = dc.GetDeviceCaps(LOGPIXELSY);
printx = dc1.GetDeviceCaps(LOGPIXELSX);
printy = dc1.GetDeviceCaps(LOGPIXELSY);
ratex = (double)(printx)/screenx;
ratey = (double)(printy)/screeny;
//开始打印
dc1.StartDoc("FirstDoc");
dc1.StretchBlt(0,0,(int)(rect.Width()*ratex),(int)(rect.Height()*ratey),&memDC,0,0,rect.Width(),rect.Height(),SRCCOPY);
dc1.EndDoc();
}
memDC.SelectObject(oldbitmap);
bitmap.Detach();
}

我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:311上位机VC MFC实现整个程序界面的打印功能.rar 
文件大小:130.64 KB  售价:11金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!




回复

使用道具 举报

快速回复 返回列表 客服中心 搜索