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