在MFC 的 Document/View 框架下打印文档相比于纯手工SDK打印文档, 已经变得简易多了. 但是: 多页文档的打印总是那么麻烦!麻烦在于你得一个字符一个字符的累加去计算你每一页文档应当打印多少字符, codeproject上很多的打印框架, 甚至都有在非文档-视图模式下的打印框架功能丰富,简便易用,堪称打印神器,是程序员们的居家旅行的必备良码, 但是多页文档的打印总是不尽人意. 国产的号称多页打印,源码开放的下载下来一看恶心的受不了,他妈我不想打印了,我想打人了. 更加有些二笔用病毒压缩包欺骗单纯的程序员们,我一氧化钙你大爷!
搜了N久,找到这么一篇文章:使用RichEdit打印http://www.codeproject.com/KB/printing/richeditprint.aspx?fid=13948&fr=1#xx0xx 打印总算完成了. 但是也诚如文章开头所说:
The preview is sucks!
这是取自另外一篇文章的代码,我做了一些修改:
只此一个函数,即可完成多页打印功能,而你只需要提供一个RichEdit控件的指针即可.
但是在实际测试的过程中却总有问题:
LastChar 达不到 CharRange的值,但是当我加上这么一行代码,文档也能完全打印出来(参见上面函数完整代码):
这是什么道理咩??UNICODE字符集问题咩?
从RichEdit20W它就已经支持UNICODE了. 但是在某些方面它又表现的不支持UNICODE,比如StreamIn
这两个函数在使用多字节字符集编译的工程中表现良好,但是在UNICODE字符集下就会出现乱码
向下面一样,将字符串转换一下后则运行无误
最近比较忙, 没有做什么更多测试,也不深入研究了,下面的两个问题,烦请高人解决:
1. 是否StreamIn真的不支持UNICODE,还是我某些设置没有做好(比如在StreamIn之前应该做什么初始化之类的)?
2. 那个打印是否也真的是UNICODE的问题? 有更优雅的解决方法不? 我那个"解决方法"太暴力, 简直成了我一块心病啊!
byebye