void CSSP3Dlg::OnButton3() 
{
DoPrint(); //打印发票按钮
}
BOOL CSSP3Dlg::DoPreparePrintDC()
{
CPrintDialog dlgPrint(FALSE);// 得到当前系统缺省打印机设置
if(!dlgPrint.GetDefaults())  return FALSE; 
hDC = dlgPrint.CreatePrinterDC(); // DC是定义为CDC DC的类成员变量 
DEVMODE* pDM;
pDM=(DEVMODE*)dlgPrint.GetDevMode(); 
ASSERT( pDM != NULL ); 
pDM->dmOrientation = DMORIENT_PORTRAIT;//竖向//;DMORIENT_LANDSCAPE横向
pDM->dmPaperSize =  DMPAPER_USER;
pDM->dmFields |=  DM_PAPERSIZE; //允许重新设置纸张大小 
pDM->dmPaperLength= 930;
pDM->dmPaperWidth = 1910;
pDM->dmFields |= -1;
ResetDC(hDC,pDM); //使设置的参数发挥作用 
::GlobalUnlock(pDM); // 联结打印DC,hDC是定义为HDC hDC的类成员变量 
if(!DC.Attach(hDC)) return FALSE;// 设置打印标志
return TRUE;
}
void CSSP3Dlg::DoPrint()
{
if(DoPreparePrintDC()==FALSE)return; //开始一次打印作业 
COleDateTime time1 = COleDateTime::GetCurrentTime();
str = "reprots printer";
DOCINFO di; 
::ZeroMemory (&di, sizeof (DOCINFO)); 
di.cbSize=sizeof (DOCINFO); 
di.lpszDocName=str; 
DC.StartDoc(&di); 
DC.StartPage(); 
//将打印字体选进设备场景
DC.SelectObject(&font);
font.GetLogFont(&lfont);
lfont.lfWeight=80;
//表格内字输出
PrintPj();//发票
// 终止打印作业
         pFont.DeleteObject();
font.DeleteObject();
DC.EndPage();
DC.EndDoc(); 
//清除打印场景 
DoClearPrintDC();
}
void CSSP3Dlg::DoClearPrintDC()
{
DC.Detach(); 
::DeleteDC(hDC); 
}
void CSSP3Dlg::PrintPj() 
{
CString tmp,tmp1,tmp2,str2,lszh;int zh; 
COleDateTime time1 = COleDateTime::GetCurrentTime();
Spen.CreatePen(PS_SOLID,2,RGB(0,0,0));
DC.SelectObject(&pFont);
font.GetLogFont(&lfont);
lfont.lfWeight=50;
    iRowPos = 40;
   DC.TextOut(200,iRowPos,"xxx公司发票");
   DC.SelectObject(&font);
   font.GetLogFont(&lfont);
   lfont.lfWeight=80;
   iRowPos = 120;
   ...................发票内容 
   Spen.DeleteObject();
}
当我在一个界面打印后,再进行别一界面处理时,需打印发票,这时,程序执行
if(DoPreparePrintDC()==FALSE)return; 
不再打印,请教这是为什么