Pet*_*mmo 4 c++ mfc popup menuitem
我有一个对话框应用程序,我想在对话框的顶部有可点击的菜单项.这些项目不显示下拉菜单,但实际运行相关命令.
我这样做是通过在对话框属性中设置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);
}
Run Code Online (Sandbox Code Playgroud)
这一半可以工作,如果你远离应用程序的alt-tab它显示为禁用,否则它不会.
有没有办法以编程方式使该区域无效?
我认为可能涉及非客户区域消息.
我没有尝试但是在常规窗口(不是对话框)CWnd :: DrawMenuBar应该做你想要的.它也可以与基于对话框的应用程序一起使用.
void CYourDlg::EnableMenuItem(UINT nCommand, BOOL bEnable)
{
CMenu* pMenu = GetMenu();
pMenu->EnableMenuItem(nCommand, bEnable ? 0 : MF_DISABLED | MF_GRAYED);
DrawMenuBar();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14401 次 |
最近记录: |