以下为代码,假设总共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();
}
{
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();
}
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();
按上述代码编译错误。E:\HENGKE\020809\HR00\BaobiaoDlg.cpp(359) : error C2661: 'StartDocA' : no overloaded function takes 0 parameters
上边所有代码位于:void CBaobiaoDlg::OnPrint(CDC* pDC,CPrintInfo* pInfo)
{上边代码}
memset(&docinfo, 0, sizeof(docinfo));
docinfo.cbSize = sizeof(docinfo);
docinfo.lpszDocName = _T("CDC::StartDoc() Code Fragment");
dcPrinter.StartDoc(&docinfo);分页就是计算出每页画多少,自己控制
我在写基于对话框的打印时,一般是生成一个视类,将这段代码放在ONDRAW中,
再在对话框生成该视类的实例,将相关数据在打印前传给实例,发送打印指令给实例就行了.