老大,Escape是溢出的意思如果返回值是比0大,说明溢出成功那你还能干个屁呀正是由于返回值是-1才对的呀!你整个把它的意思搞错了,看看我的代码吧,回头你回去试试(建意你好好看看E,还有MSDN:):):):))void CMyClass::MyPrint(void)
{
HDC hPrnDC; //打印机设备句柄名
char szProfile[100]; //win.ini中打印机信息存贮串
char *szDriver,*szDevice,*szOutput; //打印机驱动程序名,打印机名,打印端口
bool bPrinted = true; //是否已打印
char szTaskName[] = "Name of printing in task";
//从win.ini中读取打印信息
GetProfileString("windows","device","",szProfile,100);
TRACE( szProfile );
//得到打印机名,驱动程序名,和打印端口
szDevice = (char*)strtok(szProfile,",");
szDriver = (char*)strtok(NULL,",");
szOutput = (char*)strtok(NULL,",");
//断言上述串有效性及输出调试信息
TRACE( szDevice ); TRACE( szDriver ); TRACE( szOutput );
assert( szDevice&&szDriver&&szOutput );
//得到打印机设备句柄
hPrnDC = CreateDC(szDriver,szDevice,szOutput,NULL);
//断言打印机句柄
assert( hPrnDC );//准备打印
if( Escape(hPrnDC,STARTDOC,strlen(szTaskName),szTaskName,NULL) > 0 )
{
MessageBox("Just exe to here!","Can not believe it",MB_OK+MB_ICONERROR);
bPrinted = false;
}
eles {
//绘制打印机要输出的图文,比如 LineTo,DrawText之类
TextOut(hPrnDC,0,0,"Please help me!",16);
//...... 其它绘制代码
//开始打印
if( Escape(hPrnDC,NEWFRAME,0,NULL,NULL) > 0 )
Escape(hPrnDC,ENDDOC,0,NULL,NULL);//这句没看懂,时间有限请原谅
//结束打印
else bPrinted = false;
} if( !bPrinted ) MessageBox("Print error","Caption",MB_OK+MB_ICONQUESTION); DeleteDC( hPrnDC);
}
{
HDC hPrnDC; //打印机设备句柄名
char szProfile[100]; //win.ini中打印机信息存贮串
char *szDriver,*szDevice,*szOutput; //打印机驱动程序名,打印机名,打印端口
bool bPrinted = true; //是否已打印
char szTaskName[] = "Name of printing in task";
//从win.ini中读取打印信息
GetProfileString("windows","device","",szProfile,100);
TRACE( szProfile );
//得到打印机名,驱动程序名,和打印端口
szDevice = (char*)strtok(szProfile,",");
szDriver = (char*)strtok(NULL,",");
szOutput = (char*)strtok(NULL,",");
//断言上述串有效性及输出调试信息
TRACE( szDevice ); TRACE( szDriver ); TRACE( szOutput );
assert( szDevice&&szDriver&&szOutput );
//得到打印机设备句柄
hPrnDC = CreateDC(szDriver,szDevice,szOutput,NULL);
//断言打印机句柄
assert( hPrnDC );//准备打印
if( Escape(hPrnDC,STARTDOC,strlen(szTaskName),szTaskName,NULL) > 0 )
{
MessageBox("Just exe to here!","Can not believe it",MB_OK+MB_ICONERROR);
bPrinted = false;
}
eles {
//绘制打印机要输出的图文,比如 LineTo,DrawText之类
TextOut(hPrnDC,0,0,"Please help me!",16);
//...... 其它绘制代码
//开始打印
if( Escape(hPrnDC,NEWFRAME,0,NULL,NULL) > 0 )
Escape(hPrnDC,ENDDOC,0,NULL,NULL);//这句没看懂,时间有限请原谅
//结束打印
else bPrinted = false;
} if( !bPrinted ) MessageBox("Print error","Caption",MB_OK+MB_ICONQUESTION); DeleteDC( hPrnDC);
}
帮忙再查一下吧。
StartDoc();
StartPage();
EndPage();
EndDoc();
下有个例子,你看看吧
GetPrinterDC得到句柄,再用StartDoc,StartPage,EndPage,EndDoc来实现打印我也就不用请教诸位了。这是 <<Programming Windows 95>>上所用的方法。 当然热心的观众,我定给分。( 甚至要区分操作系统版本)
但诸位还是冒说明我上面的代码错在什么地方呀?!