我正在调试一些使用 MFC CDC 类打印文档的代码,这些代码在确定总页数的预览打印方面存在问题。
比较 CDC::DrawText
的返回值时对于某些元素,我注意到当绘制到内存时返回值为正,但是当绘制到打印机时返回值为负。
CDC 文件显示 DrawText
返回“如果函数成功,则返回文本的高度。”
负值是什么意思?
最佳答案
这是由于您的两个 CDC(内存和打印机)已放置在不同的 mapping modes 中造成的。 .
例如,当 CDC 的底层设备上下文位于 MM_TEXT
时模式,则为正y
向下,而在(大多数)其他模式中,正“y”向上。对我自己的系统(尽管使用基于屏幕的 CDC)进行的快速测试表明 CDC::DrawText()
当 DC 位于 MM_TEXT
时,返回正值模式,但为(例如)MM_ISOTROPIC
的负值或MM_HIMETRIC
.
我不知道您是否明确更改了任一 CDC 的映射模式!但是,即使您没有这样做,MFC 框架也可能已经对打印机设备上下文“做了一些事情”——要么在您检索它之前,要么(更有可能)在 OnPreparePrinting
中。功能。
关于c++ - 如何解释 CDC::DrawText 返回负值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60870420/