我创建了一个简单的对话框,其中包含一些控件(编辑,文本等)并保存 它到GME / GME.rc / Dialog
中的资源文件夹我添加了一个自动生成的事件处理程序,它创建了一个新类(Class.cpp 为了这个例子的目的)注意:Class :: Class(CWnd * pParent): CDialogEx(Class :: IDD,pParent)构造函数为空,我不确定是不是 相关,但我认为不是..
有一个MESSAGE_MAP命令(menu_item_id,& class :: member_function()) Class.cpp中的调用是自动生成的。它包裹在 标准的BEGIN_MESSAGE_MAP宏内容。
但是:单击菜单项时,该项目保持灰色。该 “enabled = true”和“gray = false”的属性都是正确的 配置。所以,我认为这是错误是由于消息处理程序不是 注册
任何帮助都将不胜感激。
答案 0 :(得分:1)
没有代码,它很难提供帮助。您确定在CView,CFrame,CDocument或CWinApp派生类中放置了菜单ID的消息处理程序吗?如果你把菜单处理程序放在你的对话框类中,它对你没有多大帮助。
答案 1 :(得分:1)
对话框不包含运行MFC用于启用菜单项的ON_UPDATE_COMMAND_UI处理程序列表的代码。通常这是由CFrameWnd处理的。尝试在OnInitDialog
函数中调用UpdateDialogControls
。
我看到你的代码也缺少菜单项的ON_UPDATE_COMMAND_UI宏,即使它为你引用的处理程序也是如此。
答案 2 :(得分:0)
您可以将菜单项处理程序添加到包含菜单的窗口,该菜单通常是CMainFrame。将消息映射和处理程序复制到CMainFrame,看看是否有帮助。我不确定你在这里要做什么 - 我假设你想显示'Class'(当你点击菜单项时,可能更好地编辑你的帖子来调用'ExampleDialog'或其他......) ?或者您是否以某种方式为CDialogEx派生类添加了一个菜单?如果是最后一个,我想这就是Mark所指的 - '你如何显示菜单'?如何手动将菜单添加到对话框中?