当更新处理程序调用
假定用户单击 " 文件 " 菜单上,生成一 WM_INITMENUPOPUP 消息。框架的更新 framework 公共更新 " 文件 " 菜单中的所有项目,请在菜单上放置滚动之前,以便用户可以看到它。
为此,该结构将所有菜单项的更新命令在沿标准命令传送的弹出菜单。在该路由的命令目标有机会通过对更新命令了适当的消息映射项 (窗体 ON_UPDATE_COMMAND_UI) 和称为 “更新处理程序”功能更新所有菜单项。因此,对于带有六个菜单项的一个菜单,六个更新命令发出。如果更新处理程序的菜单项的命令 ID 存在,则调用执行更新。否则,框架检查处理程序的存在该命令 ID 的并启用或禁用菜单项根据需要。
在命令传送内,如果框架未找到 ON_UPDATE_COMMAND_UI 项,将自动启用用户界面对象是否具有 ON_COMMAND 项必须具有相同的命令 ID.否则,将禁用用户界面对象。因此,确保用户界面对象启用,提供对象生成的命令处理程序或为它的一个更新处理程序。参见主题中 用户界面对象和命令 ID图形。
禁用默认禁用用户界面对象是可能的。有关更多信息,请参见类 CFrameWnd 的 m_bAutoMenuEnable 成员在 MFC 的引用。
,如果应用程序收到 WM_INITMENUPOPUP 消息时,菜单初始化是自动的在框架中,发生。在空闲循环内,框架搜索命令传送按钮更新处理程序,与为菜单类似的方式执行。