Printing 如何在mfc应用程序中支持从右向左打印

Printing 如何在mfc应用程序中支持从右向左打印,printing,mfc,right-to-left,Printing,Mfc,Right To Left,我在应用程序中从右向左打印时遇到问题。我使用codejock报告控件;它可以很好地从左到右打印视图,这是一个示例: 当布局为rtl时,控件在屏幕上呈现得非常好,打印预览也很好,但打印会导致扭曲的文档,如下所示: 我试图覆盖视图的OnPrepareDC并使用pDC->SetLayout(LAYOUT\u RTL)但失败了,我需要有关如何解决此问题的帮助。事实上,我已经找到了RTL打印问题的解决方案 问题的原因是并非所有打印机的驱动程序都支持镜像,因此在打印机的DC上调用SetLayout(RT

我在应用程序中从右向左打印时遇到问题。我使用codejock报告控件;它可以很好地从左到右打印视图,这是一个示例:

当布局为rtl时,控件在屏幕上呈现得非常好,打印预览也很好,但打印会导致扭曲的文档,如下所示:


我试图覆盖视图的OnPrepareDC并使用pDC->SetLayout(LAYOUT\u RTL)但失败了,我需要有关如何解决此问题的帮助。

事实上,我已经找到了RTL打印问题的解决方案

问题的原因是并非所有打印机的驱动程序都支持镜像,因此在打印机的DC上调用SetLayout(RTL)函数不会在所有打印机的驱动程序中都起作用

第一步是根本不调用SetLayout(RTL),
然后,当您处于RTL打印模式时,您应该重写report paint manager类中的绘图方法,以设置每个绘图矩形的对齐方式。

您是否与CodeJock支持部门或论坛联系过?似乎是一个他们应该能够帮助解决的常见问题。在文件xtpreprirtview.cpp中,他们有一个关于在打印模式下不支持rtl的注释,但在预览模式下,它是可以的,我想修复它或找到任何解决方案,这是注释。if(pInfo->m_bPreview)//RTL中的打印模式不工作!这确实是原因,但我希望如果codejock了解您的解决方案,并附上您编辑的文件,以便下一版本具有固定的rtl打印,这将非常好。感谢您考虑我的答案,事实上这正是我所做的。我告诉他们解决方案,我希望他们能考虑。这是非常有用的,为了避免控制中的新特性和你目前的答案之间的冲突,他们会在下一个版本中记住它。我希望如此。我正面临同样的问题。请你寄一些样品好吗?code@HuzifaTerkawi不幸的是,对于这个问题没有直接的解决方案(代码示例),但是,您应该遵循以下准则:1-决不在DC上调用SetLayout(RTL),因此对齐方式将始终是从左到右。2-因此,您必须重写多个类中的绘图方法,如TCXTPREPRTROW::Draw,以手动修复对齐方式,并以相反顺序迭代列。