关于ON_UPDATE_COMMAND_UI 和 ON_COMMAND

sxhybob 2010-09-16 04:06:55
我用第三方 CBCGPToolBar 生成了一个工具条,然后在APP中为工具条的某个按钮做了两个消息映射,分别是ON_UPDATE_COMMAND_UI(IDT,OnUpdateMyBt)和 ON_COMMAND(IDT,OnMyBt),可是为什么
每次更新却不调用OnUpdateMyBt,而当点击按钮时却调用OnUpdateMyBt,不知道为什么,如果要点击按钮时
调用OnMyBt,注释掉ON_UPDATE_COMMAND_UI(IDT,OnUpdateMyBt)就可以了,请那位大侠说说这是为什么?


...全文
133 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxhybob 2011-09-26
  • 打赏
  • 举报
回复
这个问题我搞定了, 主要是我把Onidle() 屏蔽了, 所以updateUI消息无法往上传递!
thinboyxp 2010-10-19
  • 打赏
  • 举报
回复
实在不行就在MFC封装消息处理的最根的地方下断点跟踪一下到底是做了怎样的传递执行顺序。
sxhybob 2010-09-17
  • 打赏
  • 举报
回复
我的消息映射加载CWinaAppd的继承类中,而且添加消息映射的地方只有这一处,关键是注释掉ON_UPDATE_COMMAND_UI(IDT,OnUpdateMyBt),ON_COMMAND(IDT,OnMyBt)点击就可用,不注释点击时反而调用OnUpdateMyBt,可是 ON_UPDATE_COMMAND_UI 和 ON_COMMAND 是两种消息响应,他们本应该互不影响啊
Oo璀璨星海oO 2010-09-16
  • 打赏
  • 举报
回复
我搞错了, 第一个是控件ID, 是一样的, 汗....
还是仔细调试一下吧, 在处理函数那里下断点, 断下后观察堆栈看消息是怎么传递的.
Oo璀璨星海oO 2010-09-16
  • 打赏
  • 举报
回复
ON_UPDATE_COMMAND_UI(IDT,OnUpdateMyBt)和 ON_COMMAND(IDT,OnMyBt)
2个宏的第一个参数都是IDT, 有问题吧
thinboyxp 2010-09-16
  • 打赏
  • 举报
回复
用spy++看看点击时的command消息正不正常,你的消息映射加在哪个类了,有可能是消息映射写错位置,或者是有比较上游的地方写重复了?
sxhybob 2010-09-16
  • 打赏
  • 举报
回复
谢谢支持
porschev 2010-09-16
  • 打赏
  • 举报
回复
up......

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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