导言和相关资料:
我正在维护一个旧的应用程序,我需要实现基于从数据库计算的数据生成报告的特性。用户还必须有打印文件的附加选项(用户必须能够选择打印机,并且必须能够看到打印预览)。
为了提高我获得满意答案的机会,请允许我用一个小小的“例子”来进一步澄清问题:
应用程序是用C++编写的,使用原始WinAPI (不使用MFC )。我正在Windows XP上工作。
问题:
我成功地使用OLE自动化生成/保存Word和Excel报告,但我无法创建与打印预览词完全匹配的打印预览。
如果我使用OLE自动化显示Excel的打印对话框/打印预览,可能会发生以下问题:
用户只需单击“关闭打印预览”,也可以简单地关闭打印属性页(请参见下图)并返回到可能危及文档的数据的文档。

我的雇主不喜欢这样(他们没有软件工程/开发背景,所以不管我怎么说,最终都会变成“风中的回声”)。)他们希望我的打印预览与打印预览字生成的完全匹配。
因此,我需要一种为用户生成打印预览的解决方案,的方式与打印预览词的创建完全匹配。此外,用户应该能够只看到的样子,而不能从我的应用程序中打开文件。用户应该能够选择打印文件的打印机。
一个类似于图片中的实现会很好。
问题:
介绍性说明:
这个问题太宽泛了,不能在一篇文章中回答,所以我只能局限于寻求的建议/一般的概念/指向正确的方向。
实际问题:
我尽了最大努力处理OLE自动化和Excel / Word文件,但正如您所看到的,在生成打印预览时存在问题,因此有以下问题:
WM_PRINTCLIENT消息之类的)?备注:
,我再次意识到这个问题太宽泛了,所以只要给我一些一般性的概念/指点,如果我被困在了什么地方,我就可以发布单独的问题。
我不需要使用 Word / Excel 和 OLE Automation,这是我目前的选择。
如果你能推荐更好的解决方案,我很乐意接受。我不想使用库.
如果需要更多的信息,询问和我将编辑我的帖子。
发布于 2014-06-02 08:32:00
当用户单击“打印”按钮时,需要打开一个对话框,该对话框将包含一个控件,该控件显示默认打印机的预览,以及选择另一个打印机、打印和退出的三个按钮。
预览控件可以是静态控件,其中WM_PAINT处理程序将绘制预览(备选方案:提供html文本的where控件或向RTF文本提供的RichText控件,但这些控件的功能会限制您)。
报价:打印预览没有那么特别。这只是意味着您必须呈现到屏幕(或位图),否则,您将呈现给打印机DC。这主要意味着使用页面大小,并为prev/next页提供UI控件。
这就是答案详细描述了绘制预览所需做的工作。
这篇CodeProject文章有一些简单的打印预览代码;它使用的是简单的MFC,应该不会太难转换成普通的C++/WinAPI。
https://stackoverflow.com/questions/23975189
复制相似问题