这样做的意义是什么? 我没看出SaveDC和RestoreDC有什么意义。而且好像有没有这两句话,效果都一样啊。 if(StartDoc(pdc,&di)> 0){  
StartPage(pdc);   //打印机走纸,开始打印  
//SaveDC(pdc);   //保存打印机设备句柄  
TextOut(pdc,1,1, "这是一个例子 ",12);  
MoveToEx(pdc,20,20,NULL);  
LineTo(pdc,120,120);  
//RestoreDC(pdc,-1);//恢复打印机设备句柄  
EndPage(pdc);     //打印机停纸,停止打印  
EndDoc(pdc);      //结束一个打印作业  
MessageBox(NULL, "打印完毕! ", "提示 ",MB_ICONINFORMATION);  
}  

解决方案 »

  1.   

    参考一下:
    http://zhidao.baidu.com/question/88377159.html
    讲的很清楚
      

  2.   

    在某些情况下,可能想改变某些设备描述表属性,确切的说应该是接下来的操作都会更改DC的相关数据,用改变后的属性进行某些操作,但是使用 RestoreDC后,又都恢复到SaveDC之前的状态了
        idSaved = SaveDC(hdc);    现在,可以改变一些属性,在想要回到调用SaveDC前存在的设备描述表时,调用:    RestoreDC(hdc,idSave);   恢复SaveDC之前的状态简单的说,这对函数就是可以让你在独立的函数中保证CDC对象的属性不会被修改,这样你的多个操作就不会造成相互影响了
      

  3.   

    等 级:  #3楼 得分:0回复于:2010-11-10 14:23:42在某些情况下,可能想改变某些设备描述表属性,确切的说应该是接下来的操作都会更改DC的相关数据,用改变后的属性进行某些操作,但是使用 RestoreDC后,又都恢复到SaveDC之前的状态了
      idSaved = SaveDC(hdc);  现在,可以改变一些属性,在想要回到调用SaveDC前存在的设备描述表时,调用:  RestoreDC(hdc,idSave);  恢复SaveDC之前的状态简单的说,这对函数就是可以让你在独立的函数中保证CDC对象的属性不会被修改,这样你的多个操作就不会造成相互影响了