如何删除菜单中的某个菜单项

程序心声 2013-11-15 04:16:31
大家好,我想问一个很简单的问题,但还是希望各位能够不厌其烦,耐心的解答一下。
我做了一个菜单,但是菜单有等级之分,比如“管理员”看到的最多,“普通用户”看到的就少一些,有一些菜单项,只能被“管理员”看到,“普通用户”是看不到的。
也就是说,我要把菜单里的一些菜单项变为不可见,起码也要不可用,置灰。
我在网上也搜了一些方法,比如:
GetDlgItem(ID_FILE_NEW)->EnableWindow(false);
或者
GetMenu()->EnableMenuItem(ID_FILE_NEW, MF_DISABLED | MF_GRAYED);
都不行,实现不了。
我用的环境是VC 2008,以上的这些方法,不知道是本身就不完整,还是不适应这个环境,总之,我这里都不能实现,甚至连界面都运行不出来。
我调试跟踪,发现,GetMenu()根本获取不了句柄。
我加菜单的的语句就是系统本身的语句,没改啊,怎么会获取不到句柄呢。
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("未能创建工具栏\n");
return -1; // 未能创建
}
我已经试了很久了,没结果,很着急,任务紧得很,在线等啊。谢谢诸位了。
...全文
250 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2013-12-21
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
程序心声 2013-11-21
  • 打赏
  • 举报
回复
我倒,我以为是有人解决问题的,没想到是和我一样来提问。谁能解决问题啊,就让帖子搁在这里吗,没有人能解决吗?
doo_fu 2013-11-21
  • 打赏
  • 举报
回复
我在2010下遇到同样问题,可能是VS2008及以上版本与VS6对菜单操作方式不同。我有一个类似问题的帖子,急昐高手解决。有100分哦。
期待中
程序心声 2013-11-18
  • 打赏
  • 举报
回复
怎么没人答复,是没有人遇到这种情况吗? 大家可以在08下面建个工程试一试。
程序心声 2013-11-15
  • 打赏
  • 举报
回复
我是写在CMainFrame类里面的,OnCreate函数,都试验过了。有时连启动有启动不起来。
LazyDunk 2013-11-15
  • 打赏
  • 举报
回复
是不是应该写在CMainFrame类里面啊,试试看,不敢保证。
程序心声 2013-11-15
  • 打赏
  • 举报
回复
追问: 还有更奇怪的事情发生,我拿了在别人机器上编译通过也能运行的一个完成此功能的范例程序,是用2003写的。 在我的2008上再编译,能通过。运行,就出错了。 我跟踪,才第一行 CMenu *pMenu = AfxGetMainWnd()->GetMenu()->GetSubMenu(0); 就报错了。 还是获取不了句柄,无法给pMenu指针赋值。下面就走不到了。 怎么回事啊? 要怎样做才能成功。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧