为了实现数据的逐行打印不走纸,我用了大家以前提出的办法,将纸的长度设置为所需要的宽度,这样实现的
    m_PrintDlg=pInfo->m_pPD->GetDevMode();  //得到相关信息
    m_PrintDlg->dmFields = 
    m_PrintDlg-dmFields|DM_PAPERSIZE|DM_PAPERLENGTH|DM_PAPERWIDTH; 
    m_PrintDlg->dmPaperSize=DMPAPER_USER;
    m_PrintDlg->dmPaperLength =130;
    m_PrintDlg->dmPaperWidth =2970;
但是这样的话130的间隔太宽,我把它改成100的时候就不能一行一行的打印了,它总是要走一次纸才能打第二行,哪位高手能告诉我该怎么做。谢谢。

解决方案 »

  1.   

    你查看一下打印机有关非打印区域的参数,即纸张的上面和下面应该留出的空白区域,dmPaperLength这个值必须大约非打印区域才行。
      

  2.   

    还有,如果如果上面的方法不能满足你的要求,你可以将dmPaperLength设置得大一点,打印完一页后,通过CDC::Escape函数向打印机发退纸命令,将打印纸回退一定的距离,但这跟打印机关系比较紧密,不同的打印机可能有不同的退纸命令,也可能没有,你查查打印机的手册看看。
      

  3.   

    您有退纸的例子吗?能不能给我发一份或者告诉我该怎么做,我的地址是[email protected]。谢谢。