菜单命令更新对话框中的处理程序

我有一个基于对话框的MFC应用程序。 我的对话框有一个菜单,我使用这里描述的技术来启用对话框中的菜单加速器。

这工作正常,但我似乎无法find任何方式来实现菜单命令更新处理程序。 或者,而是我已经实现了更新处理程序,但似乎无法find让MFC调用它们的好方法。

在网上search,我发现像UpdateDialogControls()函数来实现对话框子控件的命令更新处理程序。 但我想要在对话框菜单中执行此命令。

有什么build议么?

Solutions Collecting From Web of "菜单命令更新对话框中的处理程序"

我有这个工作。

虽然WM_KICKIDLE最初看起来很有希望(MFC在进入空闲模式时将这个消息发送给对话框),但我最终还是在文章“ 更新命令UI处理程序不适用于连接到对话框的菜单”中描述的技术上做了一些尝试 。

本文介绍如何处理OnInitMenuPopup() ,然后将代码从CMainFrame复制到处理程序。

我不确定MS为什么没有在对话框中提供更好的支持。 但是我为了我的目的而工作。

我没有太多的MFC,我使用纯win32,但这看起来像你需要的ON_UPDATE_COMMAND_UI宏 。 如果你看左边的导航菜单,你也可以找到“当更新处理程序被调用”主题。

并确保无论你传递句柄到窗口,你实际上将句柄传递给带有菜单的对话框(例如,在教程中列出3)。