我在CFormview_sView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)中都是
pDC->TextOut 和 pDC->MoveTo  pDC->LineTo  的操作
我在打印预览中可以看到我要打的文本和坐标图;
但是一打印  就错误报告
为什么啊?

解决方案 »

  1.   

    肯定是你设字体的代码不对了,
    onprint的内容贴出来看看
      

  2.   


    void CFormview_sView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
    {
    // TODO: add customized printing code here

    CString aa; pDC->TextOut(450,20,"伏安特性检测报告"); pDC->TextOut(140,40,"站    名:"); pDC->TextOut(500,40,"测试人员:");
    pDC->TextOut(140,60,"设备名称:"); pDC->TextOut(500,60,"测试地点:");
    pDC->TextOut(140,80,"设备编号:"); pDC->TextOut(500,80,"测试时间:");

    m_name.GetWindowText(aa);
    pDC->TextOut(230,40,aa);
    m_nameofequipment.GetWindowText(aa);
    pDC->TextOut(230,60,aa);
    m_number.GetWindowText(aa);
    pDC->TextOut(230,80,aa);
    m_person.GetWindowText(aa);
    pDC->TextOut(590,40,aa);
    m_place.GetWindowText(aa);
    pDC->TextOut(590,60,aa);
    m_time.GetWindowText(aa);
    pDC->TextOut(590,80,aa); pDC->TextOut(40,200,"电流");
    pDC->TextOut(40,220,"电压"); pDC->TextOut(40,240,"电流");
    pDC->TextOut(40,260,"电压");

    for(int k1=0;k1<18;k1++)
    {
    // a=2*i;
    // point[a]=m_list.GetItemText(i,1);
    // point[a+1]=m_list.GetItemText(i,2); if(k1<9)
    {
    pDC->TextOut(100+60*k1,200,m_list.GetItemText(k1,1));
    pDC->TextOut(100+60*k1,220,m_list.GetItemText(k1,2));
    }
    else
    {
    pDC->TextOut(100+60*(k1-9),240,m_list.GetItemText(k1,1));
    pDC->TextOut(100+60*(k1-9),260,m_list.GetItemText(k1,2));
    }
    }
    OnDraw(pDC);
    }
    //   OnDraw(pDC)  就是画了一个坐标图(用点、线组成的)
      

  3.   

    我还添加了以下代码,是参考别人的 void CFormview_sView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) 
    {
    // TODO: Add your specialized code here and/or call the base class

    CFormView::OnPrepareDC(pDC, pInfo); pDC->SetMapMode(MM_ANISOTROPIC); //转换坐标映射方式  CSize size = CSize(800,600);  pDC->SetWindowExt(size);  //确定窗口大小 
    //得到实际设备每逻辑英寸的象素数量 
    int xLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSX);  int yLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSY);  //得到设备坐标和逻辑坐标的比例
     long xExt = (long)size.cx * xLogPixPerInch/96 ;  long yExt = (long)size.cy * yLogPixPerInch/96 ;  pDC->SetViewportExt((int)xExt, (int)yExt);  //确定视口大小
    }
      

  4.   

    xp的那种错误报告对话框
    ----------------------------------------------------------------------
    那是说这种错误是xp专有的了?
      

  5.   

    to:   jszj应该是的,,你能QQ吗?  我截图给你看!
      

  6.   

    1.在OnPrint最上边加上return;看在打印时是否会有错误,如果没有,就是OnPrint里边的错误,否则,就是OnPrepareDC里的错误
      

  7.   

    我把OnDraw()去掉的,就不错误了。
    但OnDraw()也只是画点、线啊,和OnPrint()前面部分一样
      

  8.   

    你在OnDraw里的第二条语句前边加上return;后看OnDraw会不会出错误
      

  9.   

    OnDraw里有个Release(pDC);去掉后就可以打了