在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