右键弹出菜单,并且进行工具栏切换时,工具栏上按钮的状态显示不对。

eagerle01 2010-05-31 02:55:12
现在碰到这么一个问题,按照我的理解,正常情况下菜单项和工具栏等的状态(enable和check等状态)是在主线程空闲时刻,由MFC框架自己触发和响应的。
当前的情况是,我的工具栏需要根据某一CTreeView的节点的选择的不同而相应切换到不同的工具栏,如果正常情况下用左键切换,没有问题工具栏可以被相应的切换,工具栏上的各个按钮的状态也会正确(因为有空闲时间会走CCmdUI消息响应函数);如果单纯的用右键切换也没有问题。
问题是:现在我的右键点击到树节点上时,还需要弹出右键菜单的,这样一来出现的现象是:假设树节点A对应工具栏a,树节点B对应工具栏b,当前处于树节点A,当我直接右键点击树节点B时候,工具栏会切换到工具栏b,相应的右键菜单也会被显示出来,但是工具栏b上的按钮的状态不对,ON_UPDATE_COMMAND_UI消息响应函数没被调用。按我的理解是由于弹出了右键菜单,所有的消息都被该窗口截获了,包括CCmdUI消息,使得本来响应该消息函数,无法正常被执行,导致按钮状态不对了。

不知道我的理解是否正确,不知道这个问题如何解决,请教各位大侠了!
...全文
222 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
每天接分...以示存在
eagerle01 2010-06-01
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 cnzdgs 的回复:]

自己调一下theApp.OnIdle(0);
[/Quote]
谢谢大牛,果然神奇,问题解决了。
学习下OnIdle。
cnzdgs 2010-06-01
  • 打赏
  • 举报
回复
自己调一下theApp.OnIdle(0);
向立天 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 eagerle01 的回复:]
好像还是不行
[/Quote]
用时钟消息再试试
在右键消息中设一个时钟
然后500毫秒以后在弹出菜单
eagerle01 2010-05-31
  • 打赏
  • 举报
回复
好像还是不行
eagerle01 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xianglitian 的回复:]

如果我没记错的话
这个问题以前开过一帖
那次我好像没回
这次说说我的想法吧
既然不弹菜单的时候没有问题
你是不是可以这样
在右键消息中之处理工具栏切换
然后用PostMessage抛出一个消息专门用来显示右键菜单
[/Quote]
谢谢,试试先!
King030609 2010-05-31
  • 打赏
  • 举报
回复
结帖率超过100% ???
我是一道光_ 2010-05-31
  • 打赏
  • 举报
回复
liguominz 2010-05-31
  • 打赏
  • 举报
回复
路过,接分。
asdfa23rdadsdfa 2010-05-31
  • 打赏
  • 举报
回复

gx
gx
gx
feng5799 2010-05-31
  • 打赏
  • 举报
回复

只能帮顶了
向立天 2010-05-31
  • 打赏
  • 举报
回复
如果我没记错的话
这个问题以前开过一帖
那次我好像没回
这次说说我的想法吧
既然不弹菜单的时候没有问题
你是不是可以这样
在右键消息中之处理工具栏切换
然后用PostMessage抛出一个消息专门用来显示右键菜单
  • 打赏
  • 举报
回复
sf

sf

15,979

社区成员

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

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