局部刷新会导致windowless richedit光标闪烁严重, DirectUI也存在类似问题, 求解决

mscrack 2014-04-02 05:08:27
如题, 在项目中用到 windowless richedit, 使用gdiplus绘制, 刚开始写的时候, 用的是全局刷新 InvalidateRect(NULL), 一直都没有发现问题, 后来CPU有点高, 优化为局部刷新, InvalidateRect(&rect), 但是发现richedit框的光标闪烁得很厉害; 随后调试DirectUI中的Demo(), 发现也存在类似问题(设置一个定时器, 里面不停调用InvalidateRect(&rect)); 再接着, 直接建一个MFC项目, 在窗口上创建一个光标插入符, 然后启动定时器局部刷新, 貌似也有问题;
项目中richedit插入gif动画, 或者播放无窗口的flashf动画时, 会频繁刷新窗口, 导致问题出现;
...全文
201 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdzfjfhnui 2014-05-06
  • 打赏
  • 举报
回复
我们的方法是,在windowsless的richedit得到焦点后,设置一个和系统光标闪烁interval一致的timer,然后在timer内invalid richedit的区域,然后绘制时候通过获取当前光标所在richedit的位置绘制光标,光标的闪烁就就是绘制与不绘制,重复这样就有闪烁的效果
lis2012 2014-05-05
  • 打赏
  • 举报
回复
最好使用 InvalidateRect(&rect,false),背景不重绘
向立天 2014-05-05
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法

15,979

社区成员

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

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