我写了一个打印函数,在windows 2000 下调试通过 但在windows 98 下在CDC::EndPage() 返回-1 请高手执教。
James 2005-04-11 09:44:40 函数体如下:
CDC dc;
CTextList *t;
CLineList *l;
CTableList *r;
DOCINFO doc;
int x,y;
double ox,oy;
ox=m_oFFSETX*0.01;
oy=m_oFFSETY*0.01;
DebugToFile("GetDefaultPrinter");
CPrintDialog dlg(FALSE);
if (dlg.GetDefaults()==FALSE)
{
DebugToFile("无法获得默认打印机!");
return FALSE;
}
if (dc.Attach(dlg.GetPrinterDC())==FALSE)
{
DebugToFile("获得打印机失败!");
m_errorCode=-1;
return FALSE;
}
x=dc.GetDeviceCaps(LOGPIXELSX);
y=dc.GetDeviceCaps(LOGPIXELSY);
dc.SetMapMode(MM_TEXT);
memset(&doc, 0, sizeof(doc));
doc.fwType=DI_APPBANDING;
doc.lpszDocName=DocName;
doc.cbSize=sizeof(DOCINFO);
DebugToFile("StartDoc="+DocName);
if (dc.StartDoc(&doc)<0)
{
SetErrorCode("StartDocError=",GetLastError());
return FALSE;
}
DebugToFile("StartPage");
if (dc.StartPage()<0)
{
SetErrorCode("StartPageError=",GetLastError());
dc.AbortDoc();
return FALSE;
}
//输出
//输出结束
int retval;
CString str;
DebugToFile("EndPage");
retval=dc.EndPage();
str.Format("%ld",retval);
if (retval<0)
{
DebugToFile("EndPageError="+str);
dc.AbortDoc();
return FALSE;
}
DebugToFile("EndDoc");
retval=dc.EndDoc();
if (retval<0)
{
DebugToFile("EndDocError="+str);
dc.AbortDoc();
return FALSE;
}
ClearPro();
DebugToFile(DocName);
DebugToFile("");
return TRUE;