c++ - 如何解释 CDC::DrawText 返回负值?

标签 c++ printing mfc

我正在调试一些使用 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/

相关文章:

c++ - MFC:新对象 - 错误消息?

c++ - visual studio 控件编辑器为 visual c++ 生成的代码在哪里?

javascript - 在内容进入打印机之前关闭窗口 (JavaScript)

winapi - C++ MFC 从小部件 ID 添加组合框字符串项

windows - 我需要为 Windows 创建一个虚拟打印机驱动程序,它将通过另一个程序重定向请求

css - 如何打印浏览器中显示的网页

c++ - 如何使具有 HTML View 的 MFC 应用程序一致地接受拖放文件?

c++ - 如何在单行语句中减少 C++ 中的多个变量?

c++ - 链接到 Unix 上的 Clang 和 LLVM - 强制使用 LLVM 的编译器标志?

c++ - SHDocVw::IShellWindowsPtr 在 IE8 下失败? (错误 0x80040154)