右键菜单残影消失慢,该怎么办
上岸の鱼 2010-07-30 09:58:16 程序使用FormView分成左(LEFT),中(MIDDLE)两块区域。
左边是树(Tree),中间根据左边点击的选项显示不同的图片,或加载控件显示曲线、播放flash等。
现在为左边的树响应了右键菜单响应的消息函数,以及切换选择项的消息函数:
ON_NOTIFY(TVN_SELCHANGED,IDC_TREE_CATALOG,OnTreeSelChanged)
ON_NOTIFY(NM_RCLICK,IDC_TREE_CATALOG,OnNMRclickTree1)
右键消息弹出菜单,并同时选择选中新节点,就是说那个节点同时被选上了。这样在我右键点击的时候,同时响应了以上两个函数,即弹出菜单,又在MIDDLE里跟新显示界面。
结果问题就出在这里了,连续右键不同节点时,前面一个右键菜单的消失的比较慢,留下了残影。如果屏蔽TVN_SELCHANGED消息,则就不会有这样的问题,同时我在右键菜单函数或OnTreeSelChanged中UpdateData或InvalidDate都解决不了问题,
我又试过创建一个线程,将OnTreeSelChanged里的函数单独封在里面,企图通过sleep线程让右键菜单先响应结束再进行MIDDLE界面的更新,但很惊奇遗憾地发现之前一个右键菜单的残影一定会在MIDDLE界面更新完之后才消失。
我想这是问题的关键所在,想请教大家该如何解决这个菜单残影问题,是否有Windows函数可以在程序里先行对被摧毁的修菜单区域进行更新消除残影,使残影不会在我MIDDLE区域更新完之后在消失?
希望大家多帮我看看,非常感谢了