代码如下
    //创建字体
    HFONT hfontnew =CreateFontA(10,5,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,0,0,0,0,"Arial");   
   CClientDC dc(this);
   SelectObject(dc,hfontnew);
   CRect rect;
   this->GetClientRect(&rect);
   CBrush brush(RGB(0,0,0));
   dc.SetBkColor(RGB(0,0,0));
   dc.SetTextColor(RGB(255,255,255));
以上代码在子对话框的计时器中运行,用于刷新该子对话框背景(整个对话框,无标题栏),总共有10个子对话框。
运行一段时间之后,所有绘图都绘到了主对话框区域(位置从原点开始,因为刷新子对话框是刷新整个,所以RECT.LEFT 和RECT.TOP都为0),这时鼠标点击主对话框出错我想问一下上述代码是否有问题?是RECT的问题还是DC的问题

解决方案 »

  1.   

    在最后加入
    DeleteObject( hfontnew );
    brush.DeleteObject();
    看看还有没有上述问题
      

  2.   

    你使用了font object和brush object
    这些都是windows gdi对象
    在确信不会用到之后,必须调用相应的delete方法进行资源回收,否则系统会因为资源不足产生绘制错误。你可以打开你的资源管理器,在"查看->选择列"页面把"GDI对象"打勾(前提是你当前查看的是"进程"页),这样你就能看到你的程序在运行过程中是否存在未释放GDI对象的情况.