
MFC画图的问题 20
为什么我在用MFC编写的一个程序在运行之后,点击操作了但是需要好半天才会反应过来,但当我把生成的exe最小化之后,过一会再点击操作,却会很快反应,这是什么地方有问题,与I...
为什么我在用MFC编写的一个程序在运行之后,点击操作了但是需要好半天才会反应过来,但当我把生成的exe最小化之后,过一会再点击操作,却会很快反应,这是什么地方有问题,与Invalidate()有关吗?我设置的是Invalidate(False)(因为不想把以前画的擦掉),但换成Invalidate(TRUE)之后也会快了,不会出现延迟现象,这是怎么回事?
展开
4个回答
展开全部
Invalidate函数原型为void Invalidate( BOOL bErase = TRUE );
若bErase是FLASE,不用背景色重绘窗口客户区;若为TRUE,系统GDI模块会在调用你实现的OnPaint之前向窗口发送一个WM_ERASEBKGND消息,如果你实现了该消息的响应函数OnEraseBkgnd,会调用该函数进行重绘,否则系统GDI模块会调用之前设置的窗口背景色重绘。调用Invalidate(False)时程序界面没有及时响应变化应该是没有适时地重绘导致的。
若bErase是FLASE,不用背景色重绘窗口客户区;若为TRUE,系统GDI模块会在调用你实现的OnPaint之前向窗口发送一个WM_ERASEBKGND消息,如果你实现了该消息的响应函数OnEraseBkgnd,会调用该函数进行重绘,否则系统GDI模块会调用之前设置的窗口背景色重绘。调用Invalidate(False)时程序界面没有及时响应变化应该是没有适时地重绘导致的。
追问
我想问的是为什么会有延迟,操作后要过一小会才会会出来?
追答
不太了解你程序的具体情况啊,能不能把图形相关代码发出来。
展开全部
估计是你的重绘有问题,检查GDI资源有无不合理使用,或者死循环或者特别耗时的操作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
也许是你的OnPaint中绘图有问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主可以选择界面的部分刷新
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询