我最近编了一个串口接受的上位机程序,低层用的是ARM STM32,上位机用的是VC6.0,开发语言:C++,一切比较顺利,上位机与下位机已经能正常通信,我又加了一个功能,就是用CPrintDialog编了一个打印程序,把下位机发上来的数据打印出来,程序代码完全按照明日科技“Visual C++开发技术大全”(人民邮电出版社,2007年3月第一版,这本书我在网上看到有第二版,但我最近买的是第一版)第19章“发票打印”编写的,具体位置为:光盘\mingrisoft\dxyy\19\04\02,现在出现了一个问题:我想在一行汉字下画一条横线,打印预览正常,但实际打印出的效果是横线总和汉字错开,如下图
画线代码:就是使用MoveTo和LineTo,我使用的操作系统是W7,不是W2000,我自己查了7 、8天,也上网找了很多资料,我自己认为可能有4个方面的原因:1、逻辑坐标与设备坐标映射方式不对。2、打印转换比例不对,原程序比例为ratex=(double)printx/screenx,ratey=(double)printy/screeny。3、操作系统不同造成,原程序使用W2000,我用的是W7。4、打印机设置不同。其中原因1、2、4我都已经试过很多次,把映射模式改为8种中 的任何一种都不对,打印机使用过HP1106,HP400,EPSON100,打印比例因为对MFC底层打印不是很清楚,只是简单的修改打印原点,比例系数,效果都不理想,现在只剩操作系统没试,因为一时找不到W2000系统,加上不知是否原因,很纠结,另外我把原“发票程序”源代码在W7操作系统的VC6.0下运行,打印效果也不对,如下图
憋的实在难受,我是搞下位机硬件开发的,有点束手无策了,请编程高手指点迷津,不胜感谢!!!
这是书中发票打印的源代码,在CPreview类中的OnPraint函数中获得屏幕的分辨率,在打印按钮的响应函数中获得打印机的DC,打印预览与打印都调用CPreview中的成员函数DRawReport函数,比例因子也在该函数中,其余的就是制表代码了,麻烦again老师看一下代码,问题到底出在哪,非常感谢!!!
wqjhj 发表于2017-03-02 09:58
这是书中发票打印的源代码,在CPreview类中的OnPraint函数中获得屏幕的分辨率,在打印按钮的响应函数中获得打印机的DC,打印预览与打印都调用CPreview中的成员函数DRawReport函数,比例因子也在该函数中,其余的就是制表代码了,麻烦again老师看一下代码,问题到底出在哪,非常感谢!!!