CFormView实现了打印预览,但是打印室空白
这个问题已经有人提问过了,但是他自己解决了,现在我遇到这个问题了,不知道怎么解决了,在OnDraw函数里绘制报表实现了类似的功能,但是这个问题没解决总觉得不舒服
我需要打印一个CFormView,按照在网上的方法,实现了打印预览,但是打印出来的是空白,没有任何内容。
http://www.codeguru.com/cpp/w-p/printing/article.php/c2945/
下面是代码。
添加成员变量:
CDC * m_pMemDC; //A memory device context compatible with our printer DC.
CRect m_rect; //To hold the dimensions of our printing area while scaling.
CBitmap * m_pBm; //Capture the screen image as a Bitmap
在构造函数中添加
m_pMemDC = new CDC ;
m_pBm = new CBitmap;
在析构函数中添加
delete m_pMemDC; //CLEAN UP OUR VARIABLES
delete m_pBm;
重载OnBeginPrinting函数:
if (m_pMemDC->GetSafeHdc()) m_pMemDC->DeleteDC();
m_pMemDC->CreateCompatibleDC(pDC);
CClientDC dc(this);
CRect rect;
GetClientRect(rect);
m_pMemDC->SetMapMode(MM_ANISOTROPIC);
m_pMemDC->SetWindowExt(dc.GetDeviceCaps(LOGPIXELSX),dc.GetDeviceCaps(LOGPIXELSY));
m_pMemDC->SetViewportExt(m_pMemDC->GetDeviceCaps(LOGPIXELSX),m_pMemDC->GetDeviceCaps(LOGPIXELSY));
if (m_pBm->GetSafeHandle()) m_pBm->DeleteObject();
m_pBm->CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());
m_pMemDC->SelectObject(m_pBm);
dc.DPtoLP(rect); //Convert to Logical Coordinates
m_rect = rect; //Save Logical Coordinates
m_pMemDC->BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);
重载OnPrint函数
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(m_pMemDC->GetDeviceCaps(LOGPIXELSX),m_pMemDC->GetDeviceCaps(LOGPIXELSY));
pDC->SetViewportExt(pDC->GetDeviceCaps(LOGPIXELSX),pDC->GetDeviceCaps(LOGPIXELSY));
pDC->StretchBlt(0,0,m_rect.Width(),m_rect.Height(),m_pMemDC,0,0,m_rect.Width(),m_rect.Height(),SRCCOPY);
测试后,发现打印预览正常,但是打印出来的是一片空白。
后来找了些资料说有些打印机是不支持位图传送的,也就是说不支持bitblt和stretchblt函数,也就是说这种方法并不能成功。
请问除了这个方法还有其他的方法吗,请各位高手指教。
http://www.codeproject.com/KB/printing/printingtricksandtips.aspx
这个链接据说是解决的方法,但是看了半天,没搞明白。。。
CFormView实现了打印预览,但是打印室空白相关推荐
- 在C#里实现DATAGRID的打印预览和打印
作者Blog:http://blog.csdn.net/qieyj/ 很多人都在论坛里问,如何实现DATAGRID的打印预览和打印,现在我就把这方面的源代码告诉大家.这段代码也花费了我1个晚上的时间, ...
- html 打印预览跟实际不一样,打印预览和打印出来的不一样(总结自己遇到的问题和解决方法)...
1.打印预览和打印出来的不一样(表格里面的字出了表格)? 答:我在打监理月报时,经历的一个案例,其实这是因为你设置了居中,结果呢,表格进了下一页,所以这时有可能字就出了表格,只要将此单元格选定,然后选 ...
- 在网页中调用打印预览及打印设置
在网页中调用打印预览及打印设置 以下内容为程序代码: <OBJECT id=WB classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 heig ...
- java使用Bartender模板btw格式打印预览和打印SDK
java使用Bartender模板btw格式打印预览和打印SDK 下载 bartender-printer-sdk.jar 支持模板转图像 支持自定义纸张大小 支持局域网打印机打印 支持模板数据源模式 ...
- 网页打印问题,打印设置,打印预览,打印分页,纵打,横打及页面的边距
1.控制"纵打". 横打"和"页面的边距 (1) <object id="factory" style="display ...
- java 打印预览_java打印和打印预览机制实例代码
代码如下: import java.awt.basicstroke; import java.awt.borderlayout; import java.awt.color; import java. ...
- qt tableb view 打印预览和打印的问题 个人解决办法
好了长话短说 因为tableview 不提供print 函数 ,所以 要实现打印现在基本是基于 两种 一种是利用render 函数 一种是利用 html 来实现 我个人因为在用rend ...
- word中插入“分节符-下一页”后,打印预览会多出空白页的解决方法
介绍 word排版好不容易弄好之后分节符产生的空白会使打印结果非常混乱,无论是采用打印还是导出pdf.以下根据网上查找介绍两种方法. 其中第一种方法参考百度,实际操作比较复杂: 第二种方法是我自己在软 ...
- C# 打印预览 PrintDocument打印、打印预览
#region 打印预览#region 变量 常量//以下用户可自定义 //当前要打印文本的字体及字号 private const int HeadHeight = 40;private static ...
- chrome html 打印预览,Chrome打印预览错误
我想打印一个html页面.html页面是由我开发的,这个页面可以用mozilla打印,即. 在Chrome中:当按下CTRL + P时会弹出预览窗口,但它会显示:"打印预览失败", ...
最新文章
- Java ByteArrayOutputStream size()方法与示例
- JEECG 缓存用法
- linux环境下qt实验报告,青岛科技大学实验报告(实验一).doc
- 大数据_Flink_流式处理_简介_流数处理的发展演变---Flink工作笔记0004
- 直播预告 | Rainbond与Service Mesh微服务架构
- 20151212Jquery 工具函数代码备份
- jetty jndi mysql_jetty配置jndi数据源
- C语言易错知识点总结
- 太极 免ROOT使用Xposed模块
- 打造个性QQ,适合网吧做自己安全的QQ
- 小鹤双拼鹤形教程-by小鹤双拼输入法QQ群友-45℃的回忆
- ie测试兼容的软件,IE系列浏览器兼容性测试点整理
- Linux终端程序用c语言实现改变输出的字的颜色 (转)
- day09-面向对象综合训练综合练习
- C++prime读书笔记(二)C++标准库:IO、容器、泛型算法、动态内存
- Android OrangePi 4G IOT(四) - MTK LK分析
- fzu-1607-Greedy division
- 「可解释知识图谱推理」最新方法综述
- WiFi探针的工作原理及采集的数据?
- C语言:左旋数组“abcdef”==“cdefab”