【发布时间】:2024-01-24 04:58:02
【问题描述】:
我正在调试一些使用 MFC CDC 类打印文档的代码,并且在确定总页数的预览打印方面存在问题。
当比较来自CDC::DrawText 的某些元素的返回值时,我注意到当绘制到内存时返回值是正的,但是当绘制到打印机时返回值是负的。
CDC 文档说 DrawText return "函数成功时的文本高度。"
负值是什么意思?
【问题讨论】:
我正在调试一些使用 MFC CDC 类打印文档的代码,并且在确定总页数的预览打印方面存在问题。
当比较来自CDC::DrawText 的某些元素的返回值时,我注意到当绘制到内存时返回值是正的,但是当绘制到打印机时返回值是负的。
CDC 文档说 DrawText return "函数成功时的文本高度。"
负值是什么意思?
【问题讨论】:
这是因为您的两个 CDC(内存和打印机)被放置在不同的mapping modes 中。
例如,当 CDC 的底层设备上下文处于 MM_TEXT 模式时,正向 ydown 而在(大多数)其他模式下,正向“y”处于向上状态。对我自己的系统(尽管使用基于屏幕的 CDC)进行的快速测试表明,当 DC 处于 MM_TEXT 模式但 负 时,CDC::DrawText() 返回一个 正 值em> 值(例如)MM_ISOTROPIC 或 MM_HIMETRIC。
您是否明确更改了任一 CDC 的映射模式,我不知道!但是,即使您没有,MFC 框架也可能已经对打印机设备上下文“做了一些事情”——在您检索它之前或(更有可能)在 OnPreparePrinting 函数中。
【讨论】: