窗口重绘与鼠标右键菜单冲突
我有一个窗口,然后让窗口继承了CRichEditCiew类,然后要想RichEdit控件中写数据,之前因为写数据频率过高(每毫秒上百次)并让其立即显示,所以导致程序占用CPU频率很高。所以我想了一种办法就是建立一个定时器,然后每0.1s触发后,先禁止RichEdit控件的重绘,让程序往控件里写数据,此时刚写入的数据不会立即在RichEdit中显示,之后我让RichEdit控件恢复重绘,此时刚才写入的数据就会显示在RichEdit中了,这样CPU占用率就降低很多。我用SetRedraw是可以实现,但是这样当我在窗口上需要单击鼠标右键弹出菜单时却无法弹出。
1,我调试时发现窗口压根就收不到鼠标右键消息wm_RbuttonDown,但注释掉定时器后就可以收到右键消息了;
2,当我把禁止重绘那条语句注释掉时鼠标右键可以弹出,但这样的话RichEdit就会写入什么立即显示什么,CPU占用率和原来一样。
3,当我用lockUpdateWindow进行禁止重绘与恢复重绘时,鼠标右键是可以弹出来,但是桌面上的图标却会不停刷新。
我想的是等鼠标右键按下时就kill掉定时器,此时窗口就不会重绘了,当选中右键菜单时再重新设定定时器。但是现在窗口根本收不到鼠标右键消息所以没法kill定时器。
或者大家还有其他的好办法吗?