我正在调试一些代码,这些代码使用MFC CDC类打印文档,并且在预览打印以确定页面总数时遇到问题。

当比较CDC::DrawText的某些元素的返回值时,我注意到在绘制到内存时返回值为正,但是在绘制到打印机时返回值为负。

CDC文档说DrawText返回“如果函数成功,文本的高度”。
负值是什么意思?

最佳答案

这是由于您的两个CDC(内存和打印机)已放置在不同的mapping modes中引起的。

例如,当CDC的基础设备上下文处于MM_TEXT模式时,则正y处于关闭状态,而在(大多数)其他模式中,正“y”处于向上状态。在我自己的系统上进行的快速测试(尽管使用的是基于屏幕的CDC)显示,当DC处于CDC::DrawText()模式时,MM_TEXT返回正值,但对于(例如)MM_ISOTROPICMM_HIMETRIC,返回负值。

我不知道您是否明确更改了两个CDC的映射模式!但是,即使您没有,MFC框架也可能已经在打印机设备上下文中“完成了某些操作”-在检索它之前,或者(更可能是)在OnPreparePrinting函数中。

关于c++ - 如何解释CDC::DrawText返回负值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60870420/

10-11 16:07