如何解释 CDC::DrawText 返回负值?
How to interpret CDC::DrawText returning negative value?
我正在调试一些使用 MFC CDC Class 打印文档的代码,这些代码在确定总页数的预览打印方面存在问题。
当比较来自 CDC::DrawText
的某些元素的 return 值时,我注意到当绘制到内存时 return 值为正,但是当绘制到打印机时 return 值为负。
CDC 文档说 DrawText
return“函数成功时文本的高度。”
负值是什么意思?
这是由于您的两个CDC(内存和打印机)被放置在不同的地方造成的mapping modes。
例如,当 CDC 的底层设备上下文处于 MM_TEXT
模式时,则正 y
是 down 而在(大多数)其他模式下, 正 'y' 上升。在我自己的系统上进行的快速测试(尽管使用基于屏幕的 CDC)表明 CDC::DrawText()
returns positive 当 DC 在 MM_TEXT
模式,但 negative 值(例如)MM_ISOTROPIC
或 MM_HIMETRIC
.
我不知道您是否明确更改了任何一个 CDC 的映射模式!但是,即使您没有,MFC 框架也可能 "done something" 到打印机设备上下文 - 在您检索它之前或(更有可能)在 OnPreparePrinting
函数中。
我正在调试一些使用 MFC CDC Class 打印文档的代码,这些代码在确定总页数的预览打印方面存在问题。
当比较来自 CDC::DrawText
的某些元素的 return 值时,我注意到当绘制到内存时 return 值为正,但是当绘制到打印机时 return 值为负。
CDC 文档说 DrawText
return“函数成功时文本的高度。”
负值是什么意思?
这是由于您的两个CDC(内存和打印机)被放置在不同的地方造成的mapping modes。
例如,当 CDC 的底层设备上下文处于 MM_TEXT
模式时,则正 y
是 down 而在(大多数)其他模式下, 正 'y' 上升。在我自己的系统上进行的快速测试(尽管使用基于屏幕的 CDC)表明 CDC::DrawText()
returns positive 当 DC 在 MM_TEXT
模式,但 negative 值(例如)MM_ISOTROPIC
或 MM_HIMETRIC
.
我不知道您是否明确更改了任何一个 CDC 的映射模式!但是,即使您没有,MFC 框架也可能 "done something" 到打印机设备上下文 - 在您检索它之前或(更有可能)在 OnPreparePrinting
函数中。