什么时候调用ON_UPDATE_COMMAND_UI定义的消息

sity 2001-01-04 10:30:00
我见一个例子用于在状态条上加当前时间,它就是用了ON_UPDATE_COMMAND_UI(ID_INDICATOR_TIME,OnUpdateTime),那这个OnUpdateTime在什么时候被调用,另外,ON_UPDATE_COMMAND_UI是不是仅用于修改界面。
...全文
579 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
happylaodu 2001-01-04
  • 打赏
  • 举报
回复
天哪,我要疯了,又写错,就应该是"如果是基于CFrameWnd,则OnUpdateCmdUI由CFrameWnd自动调用的".

另外,你的程序能不能正常运行?如果不能, e-mail your code to me:
happylaodu@21cn.com


happylaodu 2001-01-04
  • 打赏
  • 举报
回复
Sorry,再补充一点:我上面说的是针对于对话框程序的,如果是基于CFrame,则OnUpdateTime
由CFrameWnd自动调用的。

那么你的OnTimer()函数里面做了什么工作呢?与OnUPdateTime有关吗?我猜没有关系!
sity 2001-01-04
  • 打赏
  • 举报
回复
程序中没有OnIdleUpdateCmdUI,只是在CMainFrame的OnCreate()中使用了::SetTimer函数。我还是不明白,如果是时时刻刻都调用的话,那还用SetTimer干什么?而如果象zyoujie说的那样,显示前调用的话(我理解可能指每刷新一次界面),那SetTimer也不刷新界面呀,那这个OnUpdateTime岂不是只是在刷新界面时才调用一次。
happylaodu 2001-01-04
  • 打赏
  • 举报
回复
补充一点,上面说的OnIdleUpdateCmdUI 函数里调用了OnUpdateCmdUI函数,它是负责更新ToolBar或StatusBar的,它会找到你的OnUpdateTime函数(根据ON_UPDATE_COMMAND_UI宏里面的内容)并调用它。
zyoujie 2001-01-04
  • 打赏
  • 举报
回复
在显示前,先调OnUpdateTime
ON_UPDATE_COMMAND_UI一般只用于修改显示界面
happylaodu 2001-01-04
  • 打赏
  • 举报
回复
你是从MSDN的例程上看来的吧。
请找一下,程序中应该有一个函数叫OnIdleUpdateCmdUI (应该是在你自己的StatusBar类里面),它响应WM_IDLEUPDATECMDUI消息,顾名思义,在程序进入空闲时,就会得到这个消息,因此如果你调试一下,会发现它几乎是无时无刻不在响应这个消息。

ON_UPDATE_COMMAND_UI是一个宏,用于映射界面更新命令到某个函数,只是指明哪个函数会用来处理某个菜单项或者状态条的更新,除此之外,它没有其它用处。

秦岭刀客 2001-01-04
  • 打赏
  • 举报
回复
关键是ON_UPDATE_COMMAND_UI(ID_INDICATOR_TIME,OnUpdateTime)定义在文档类中,这样,当文档类的成员变量发生变化时,OnUpdateTime方法就会被调用。
panda_w 2001-01-04
  • 打赏
  • 举报
回复
在弹出菜单第一次显示时,就会调用。此消息仅适用于弹出式菜单的菜单项,不适用于长久显示的顶曾菜单。
eyeblue 2001-01-04
  • 打赏
  • 举报
回复
其实那个OnTimer是用来记录当前时间的
在主消息循环发现进程消息队列为空时,就会发出WM_IDLEUPDATECMDUI 消息,你的用户界面item必须响应这一消息,并且通过 pCmdUI->Enable();激活用户界面item的显示,否则对于状态条来说,panel还存在,但panel上的字(显示的时间)就不会显示出来。

16,548

社区成员

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

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

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