窗口重绘与鼠标右键菜单冲突

zhangxxyuan 2011-09-14 12:11:13
我有一个窗口,然后让窗口继承了CRichEditCiew类,然后要想RichEdit控件中写数据,之前因为写数据频率过高(每毫秒上百次)并让其立即显示,所以导致程序占用CPU频率很高。所以我想了一种办法就是建立一个定时器,然后每0.1s触发后,先禁止RichEdit控件的重绘,让程序往控件里写数据,此时刚写入的数据不会立即在RichEdit中显示,之后我让RichEdit控件恢复重绘,此时刚才写入的数据就会显示在RichEdit中了,这样CPU占用率就降低很多。我用SetRedraw是可以实现,但是这样当我在窗口上需要单击鼠标右键弹出菜单时却无法弹出。
1,我调试时发现窗口压根就收不到鼠标右键消息wm_RbuttonDown,但注释掉定时器后就可以收到右键消息了;
2,当我把禁止重绘那条语句注释掉时鼠标右键可以弹出,但这样的话RichEdit就会写入什么立即显示什么,CPU占用率和原来一样。
3,当我用lockUpdateWindow进行禁止重绘与恢复重绘时,鼠标右键是可以弹出来,但是桌面上的图标却会不停刷新。
我想的是等鼠标右键按下时就kill掉定时器,此时窗口就不会重绘了,当选中右键菜单时再重新设定定时器。但是现在窗口根本收不到鼠标右键消息所以没法kill定时器。
或者大家还有其他的好办法吗?
...全文
63 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤魂游梦 2011-09-14
  • 打赏
  • 举报
回复
你定时器是不是有sleep?
试试多线程,应该可以解决你的问题.

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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