【问题标题】:Printing page breaks from an MFC RichEdit control从 MFC RichEdit 控件打印分页符
【发布时间】:2023-04-08 05:12:02
【问题描述】:

我从 MFC 创建了一个 Rich Edit 控件 (1.0),如下所示:

m_hRichEditWnd = ::CreateWindow(_T("RichEdit"), csWindowName, ES_MULTILINE|ES_READONLY, 0, 0, 200, 200, NULL, 0, 0, 0);

我已从文件中将文本读入该控件。该文件是一个多页 .txt 文档,其中包含用于分页符的 ascii 控制字符。当我从 Rich Edit 控件打印时,我没有得到分页符。它们被打印为字符。有什么办法可以得到这些分页符吗?

我正在使用类似于http://msdn.microsoft.com/en-us/library/windows/desktop/bb787875(v=vs.85).aspx 此处描述的方法从控件中打印出来

【问题讨论】:

  • 在 EndPage() 调用上设置断点以进行基本诊断。
  • 是的,endpage 被调用了。我可以通过放置额外的 StartPage() EndPage() 在输出中强制分页。它只是不在正确的位置——即不在 ascii 分页符所在的位置。我开始认为我可能需要查看这些打印调用,而不是 Edit ctrl

标签: winapi mfc cricheditctrl


【解决方案1】:

所以我遗漏的是,我实际上并没有打印到物理打印机,而是打印到 .ps 文件。然后该 .ps 文件被 ghost 脚本转换为没有注册分页符的 pdf。我相信这是因为编辑控件实际上并没有在其中显示分页符 - 并且打印命令的工作方式几乎就像打印设备的图形 blit。分页符不是“在屏幕上”,因此不会出现在 .ps 文件中。那是一个理论。

我找到的唯一解决方案是解析进入 CRichEditControl 的信息以获取换页符。将所有字符加载到换页字符,将其打印到文件中,然后使用 EndPage() 函数手动强制换页。以这种方式继续,直到不再有换页符为止。然后确保在最后一次换页之后打印出所有剩余的字符。

【讨论】:

  • 所以你会因为回答你自己的问题而被坑吗?这个网站对于实际找到我的问题的答案非常令人失望。我已经回答了我自己的所有问题。要么我是一个糟糕的提问者,要么我是唯一一个在我有问题的领域工作的人。我猜是变老了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 1970-01-01
  • 2020-12-29
  • 2010-12-05
  • 1970-01-01
  • 2010-12-10
  • 1970-01-01
相关资源
最近更新 更多