以下为代码,假设总共200行数据,分三而打印,如何实现.(最好是在下面程序基础上完成)......请高手赐教.....谢谢.while(!m_pSet2->IsEOF())
{
    rect.InflateRect(0,-150,0,0);//向下移5
ss=(LPTSTR)(LPCTSTR)(m_pSet2->m_date);// rect.left=DrawRect.left+200;
pDC->DrawText(ss,&rect,DT_CALCRECT|DT_SINGLELINE);//不
//rect.right=DrawRect.right;//不
//pDC->Rectangle(&rect);//朝 pDC->DrawText(ss,&rect,DT_TOP|DT_SINGLELINE); //打印 ss=(LPTSTR)(LPCTSTR)(m_pSet2->m_time);//时 rect.left=rect.left+610;
pDC->DrawText(ss,&rect,DT_CALCRECT|DT_SINGLELINE);//不
//rect.right=DrawRect.right;
//pDC->Rectangle(&rect);//朝框
pDC->DrawText(ss,&rect,DT_TOP|DT_SINGLELINE); //
ss=(LPTSTR)(LPCTSTR)(m_pSet2->m_chuanhao);// rect.left=rect.left+800;
pDC->DrawText(ss,&rect,DT_CALCRECT|DT_SINGLELINE);//
//rect.right=DrawRect.right;
//pDC->Rectangle(&rect);//朝测
pDC->DrawText(ss,&rect,DT_TOP|DT_SINGLELINE); //打
ss=(LPTSTR)(LPCTSTR)(m_pSet2->m_boss);// rect.left=rect.left+520;
pDC->DrawText(ss,&rect,DT_CALCRECT|DT_SINGLELINE);//
//rect.right=DrawRect.right;
//pDC->Rectangle(&rect);//朝测试画方框
pDC->DrawText(ss,&rect,DT_TOP|DT_SINGLELINE); // ss=(LPTSTR)(LPCTSTR)(m_pSet2->m_wuliao);//物料
rect.left=rect.left+550;
pDC->DrawText(ss,&rect,DT_CALCRECT|DT_SINGLELINE);//不
//rect.right=DrawRect.right;
//pDC->Rectangle(&rect);//朝
pDC->DrawText(ss,&rect,DT_TOP|DT_SINGLELINE); //
ss=(LPTSTR)(LPCTSTR)(m_pSet2->m_weight);//
rect.left=rect.left+600;
pDC->DrawText(ss,&rect,DT_CALCRECT|DT_SINGLELINE);//不
//rect.right=DrawRect.right;
//pDC->Rectangle(&rect);//朝测
pDC->DrawText(ss,&rect,DT_TOP|DT_SINGLELINE); //打印 ss=(LPTSTR)(LPCTSTR)(m_pSet2->m_worker);//
rect.left=rect.left+700;
pDC->DrawText(ss,&rect,DT_CALCRECT|DT_SINGLELINE);//
//rect.right=DrawRect.right;
//pDC->Rectangle(&rect);//朝测试画方框
pDC->DrawText(ss,&rect,DT_TOP|DT_SINGLELINE); //打印 m_pSet2->MoveNext();


}

解决方案 »

  1.   

    int iRowCount = 0;
    int iRowsPerPage = 20; //假设每页20行;
    pDC->StartDoc();
    while(!m_pSet2->IsEOF())
    {
        iRowCount++;
        if(iRowCount % iRowsPerPage == 0)
            pDC->EndPage();//结束一页;
        if(iRowCount % iRowsPerPage == 1)
            pDC->StartPage();//开始新页
        // 这儿是你的打印代码;
        m_pSet2->MoveNext();
    }
    if(iRowCount % iRowsPerPage > 0)
        pDC->EndPage(); // 不足一页时提交本页;
    pDC->EndDoc();
      

  2.   

    再请教: 
    按上述代码编译错误。E:\HENGKE\020809\HR00\BaobiaoDlg.cpp(359) : error C2661: 'StartDocA' : no overloaded function takes 0 parameters
     
    上边所有代码位于:void CBaobiaoDlg::OnPrint(CDC* pDC,CPrintInfo* pInfo)
    {上边代码}
      

  3.   

    MSDN例子:DOCINFO docinfo;
    memset(&docinfo, 0, sizeof(docinfo));
    docinfo.cbSize = sizeof(docinfo);
    docinfo.lpszDocName = _T("CDC::StartDoc() Code Fragment");
    dcPrinter.StartDoc(&docinfo);分页就是计算出每页画多少,自己控制
      

  4.   

    这段是在视中使用的,在对话框中使用是会出错.
    我在写基于对话框的打印时,一般是生成一个视类,将这段代码放在ONDRAW中,
    再在对话框生成该视类的实例,将相关数据在打印前传给实例,发送打印指令给实例就行了.