打印纸的大小其实关系不大,关键是你打印的位置及打印逻辑区域大小和映射模式.看看CPrintInfo::m_rectDraw,还要注意映射模式。

解决方案 »

  1.   

    to CZ
      大侠: 请说的更清楚一点 我对打印了解的比较少 现在有比较急
       我的目标是连续打印记录表格在同一连续纸上(针式打印机)
       类似于
         记录1
         记录2
          .....
         记录N
        谢谢了
      

  2.   

    在视图的OnPreparePrinting()函数中可以修改打印信息,
    比如可以设置可打印区域的大小,你可以设置成很高(rect.Height()很大),
    然后你可以在OnDraw()或OnPrint()中打印,
    你只打印字体,比较简单,
    OnDraw()
    {
    pDC->IsPrinting()
    {
    pDC->SetMapMode(MM_TEXT);//使用最简单的映射模式
    for(很多记录)
    {
    pDC->TextOut(x, y, )
    y += 行距; 
    }}}但是要使程序真正好用,还得考虑很多细节问题,就不是我能告诉你的了。
      

  3.   

    高手 :
       我试过了没有成功 
     
      在视图的OnPreparePrinting()函数中可以修改打印信息,
    比如可以设置可打印区域的大小,你可以设置成很高(rect.Height()很大),
    然后你可以在OnDraw()或OnPrint()中打印,
    你只打印字体,比较简单,
    OnDraw()
    {
    pDC->IsPrinting()
    {
    pDC->SetMapMode(MM_TEXT);//使用最简单的映射模式
    for(500)
    {
    pDC->TextOut(x, y, )
    y += 行距; 
    }
    }
    }
    结果还是一页 只有30几条记录
    我跟踪了pInfo->m_rectDraw变量
      该变量的在OnPreparePrinting为空
      只有在OnPrepareDC()以后才附值
       pInfo->m_rectDraw(0,0,pdc->get(水平),pdc->get(垂直))
      而这个过程是在标准的类中 
      

  4.   

    看来修改pInfo->m_rectDraw不起到根本作用,还有纸张大小的限制,你可以尝试一下在PrintSetup中,设置一种很长的纸张。另外返璞归真,直接使用最基本的打印方法,参考codeguru上面的一篇文章
    http://www.codeguru.com/printing/std_printing.shtml我们共同探讨吧。
      

  5.   

    能把你的email告诉我吗 
     我的是[email protected]