我有一个名为Properties的CDialogEx类,我在其中处理ON_COMMAND消息。现在,当我单击菜单项ID_EDIT_PROPERTIES(作为主菜单中的子菜单)时,应该调用ON_COMMAND。事件处理程序向导为我编写了该代码,但是当我启动Application时,菜单项仍然是灰色的。我试图通过在ON_UPDATE_COMMAND_UI发生时调用EnableMenuItem来手动激活它,但无济于事。
非常感谢任何帮助。
答案 0 :(得分:1)
您只需要了解如何处理启用/禁用菜单项:
pCmdUI->Enable(bEnableState)
)确定禁用项目。另请注意:
EnableMenuItem()
,而是在ON_UPDATE_COMMAND_UI处理程序中调用pCmdUI->Enable(bEnableState)
。这不仅会影响菜单项,还会影响任何其他"命令" -type项(具有相同的ID),例如主菜单,上下文菜单,工具栏或钢筋按钮。在您的情况下,如果我理解正确,该项被禁用,因为处理程序在CDialogEx派生类中,但尚未创建此类的实例,即您的ID_EDIT_PROPERTIES命令没有ON_COMMAND处理程序。 / p>
答案 1 :(得分:0)
Per m_bAutoMenuEnable,当启用此数据成员(默认值)时,当用户下拉菜单时,将自动禁用没有ON_UPDATE_COMMAND_UI或ON_COMMAND处理程序的菜单项。
答案 2 :(得分:0)
我承认我不知道CDialogEx
的情况有所不同,但对于CDialog
我发现UPDATE_COMMAND_UI
除非我处理{{3}事件。
在OnKickIdle事件处理程序中调用:
CWnd::UpdateDialogControls上有一个简短的教程。
如果CDialogEx
取代此信息,请原谅我,我将删除答案。