有关SDK中绘图的一个问题。

losemaple 2007-04-22 10:22:41
我在一个SDK工程里的OnTimer里响应了一个时钟事件,每次响应时执行一次绘图工作,其中包含以下代码:

...
HBRUSH brush;
...
brush=::CreateSolidBrush(RGB(255,255,255));
FillRect(hdc,&rect,brush); //填充背景
...

结果在程序执行过程中发现,开始时程序一切正常,该语句以后的位图操作都能顺利执行,可是程序执行一定时间之后,屏幕就一直成白色了,只有在后面的位图操作里的TextOut(..)输出的字符串能够正常显示。

当我把上面的三行语句注释掉以后,改用BitBlt(....,BLACKNESS)填充背景时,程序才不会出现上述情况。请问这是什么原因?是因为反复创建对象造成的内存问题么??
...全文
167 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Y___Y 2007-04-22
  • 打赏
  • 举报
回复
如果你的HBRUSH brush;语句在函数体内,那你必须用完后DeleteObject(brush),因为资源泄漏了,长时间运行,资源耗尽,就会不正常
可改为改为ExtTextOut函数填充背景,就像CDC::FillSolidFill函数一样用它
losemaple 2007-04-22
  • 打赏
  • 举报
回复
谢谢1楼的 !!分送上!!

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧