老大,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);
}

解决方案 »

  1.   

    错了! 完全错了。 大大同学! "Escape"是溢出,逃逸的意思。 但API函数Escape却主要用于打印控制。 参数1是打印机设备句柄;参数2是控制码;..... 不同的控制码被打印机驱动程序译成不同的指令,以此来完成打印工作。如果执行成功,就会返回一个大于零的值,否则返回一个小于零的值表示异常。你查了MSDN,或者API函数手册没有? 搞错的是你呀!!!!!
    帮忙再查一下吧。
      

  2.   

    《Windows程序设计》有一张都是讨论用API打印的问题,你可以参考以下
      

  3.   

    老大求你了你用CDC::ESCAPE吧别用API了
      

  4.   

    我打印的时候怎么要用以下函数?
    StartDoc();
    StartPage();
    EndPage();
    EndDoc();
      

  5.   

    msdn的 \SAMPLES\VC98\SDK\GRAPHICS\GDI\PRINTER
    下有个例子,你看看吧
      

  6.   

    以后有几位言之有理,因为Escape是win3.0的函数。如果用
    GetPrinterDC得到句柄,再用StartDoc,StartPage,EndPage,EndDoc来实现打印我也就不用请教诸位了。这是 <<Programming Windows 95>>上所用的方法。  当然热心的观众,我定给分。(  甚至要区分操作系统版本)
    但诸位还是冒说明我上面的代码错在什么地方呀?!