标题
    
    
        mfc gdi 类不要调用两次 create... 函数
    
 
    
 	 
       
    
    clq
    
    
    
		
        浏览(0) + 
        2010-04-29 09:56:07 发表
        
编辑
         
        
        
        
        关键字: 
        
 
        
        
        
        
                
        mfc gdi 类不要调用两次 create... 函数
    //背景
    CBrush brush_bk;
    dc.FillRect(&rect, &brush_frame);//return;  
    //brush.CreateSolidBrush(bkColor);//重复创建会造成资源泄漏,产生"所需资源不可用错误"
    brush_bk.CreateSolidBrush(bkColor);//用一个新实例来生成新的画刷
        
        
        
        		
		        
                
                
     
    
 
	
	
     
    
       
    
    clq
    
    
    
    
    
    		    
    
          
              
    	不显式删除是可以的,我估计是它只简单的隐式删除了最近一个 create.. 的句柄,没有在 create.. 没有判断上一个句柄是否存在并删除.
    
    
     
 
	 
    
       
    
    clq
    
    
    
    
    
    
    
          
              
    	另外象 mfc 这样会自动释放的 gdi 类还有 dc 系列如果是我们自己操作 dc 一定要记得释放
hDC = ::GetDC(NULL);
::ReleaseDC(NULL, hDC);//一定要记得调用这个
字体也是 
handle = CreateFontIndirectA(&logFont);    //要销毁吗?
DeleteObject(handle);
    
    
     
 
	 
    
       
    
    clq
    
    
    
    
    
    
    
          
              
    	注意不能 DeleteObject 一个正在用的物体.
MSDN 如果说 "Do not delete a drawing object (pen or brush) while it is still selected into a DC."
    
    
     
 
	 
	
    NEWBT官方QQ群1: 276678893
    可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
    但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
    验证问题说明申请入群原因即可.