我有一个对话框应用程序,我希望在对话框顶部有可点击的菜单项。这些项目不显示下拉菜单,但实际运行相关命令。
我通过在对话框属性中设置 Popup=False 并分配消息 ID 来做到这一点,但我的问题是当项目可单击没有意义时,我的问题是无法正确禁用项目(取决于存储在对话)
我已经找到了如何从http://www.microsoft.com/msj/0299/c/c0299.aspx禁用任何弹出式父菜单项,但这并不是我想要的
我还从 msdn 知识库文章 KB242577 中了解了如何将菜单命令路由添加到对话框。
这适用于子菜单项,但不适用于顶级菜单。
我目前正在使用以下功能来禁用
void CYourDlg::EnableMenuItem(UINT nCommand, BOOL bEnable)
{
CMenu* pMenu = GetMenu();
pMenu->EnableMenuItem(nCommand, bEnable ? 0 : MF_DISABLED | MF_GRAYED);
}
这一半有效,如果您在应用程序之外按 alt-tab 键,它确实显示为已禁用,否则不会。
有没有办法以编程方式使该区域无效?
我认为可能涉及非客户区消息。