想在基于对话框的MFC程序里,根据不同用户禁用某些子菜单 10

用户分权限分为高、低譬如,如果用户权限为高,则考勤管理这个菜单可以用,如果用户权限为低,则考勤管理这个菜单不可以用越详细越好,谢谢啦那我如果只有管理员和用户两个权限,改怎... 用户分权限分为高、低譬如,
如果用户权限为高,则考勤管理这个菜单可以用,
如果用户权限为低,则考勤管理这个菜单不可以用

越详细越好,谢谢啦
那我如果只有管理员和用户两个权限,改怎么办呀我写的是
1.在stafx.cpp中定义一个全局变量g_power,
2.然后在登录页面login.cpp中 extern g_power,
3.给管理员和普通用户添加click函数,
4.当选择管理员时,在click函数里赋值m_power=1;当选择普通时,在click函数里赋值m_power=2
5.然后在主程序对话框CFPAttendanceDlg.cpp中给菜单添加COMMAND函数,在里边写{if(g_power=1)
pCmdUI->Enable(TRUE);
else
pCmdUI->Enable(FALSE);
}

可是这样做了之后这个菜单无论选择管理员还是普通用户,都没办法使用了,而且我这个逻辑也有问题,突然想到应该在click函数里从数据库中读取power值才对,可是具体语句不太会,您能帮忙么,谢谢啦!
展开
 我来答
bhtzu
2015-04-25 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4156万
展开全部

MFC的每个菜单命令,都可以用OnUpdateCommandUI这个响应函数来控制是否禁止使用。

每个用户登陆后,应该都有一个“授权码”,这个授权码要个用户名一起,作为全局变量(或者APP类成员变量)保存起来。

之后在对应的OnUpdateCommandUI函数中,大概这样就可以了:

#define QX_KAOQINGUANLI 0x80
if(m_QuanXian & QX_KAOQINGUANLI == QX_KAOQINGUANLI )
    pCmdUI->Enable(TRUE);
else
    pCmdUI->Enable(FALSE);
更多追问追答
追问
我想的是设置一个全局变量m_QuanXian,当选择高级用户时,m_QuanXian=0,低级用户m_QuanXian=1,然后通过不同的变量值来决定是否禁用,可以我这样做之后,不管点高级用户还是低级用户,都不能使用菜单了。。。。
m_QuanXian是指的授权码么,我怎么可以把授权码和用户一起作为全局变量呀,QX_KAOQINGUANLI代表什么呀,谢谢bhtzu
追答
如果只有两种权限,那么QX_KAOQINGUANLI 就没必要了,这个是为了对每个菜单都有单独权限的思路。参考ShowWindow函数参数SW_SHOW的定义方法。

全局变量,随便设置在哪个全局的头文件都可以。不过MFC下,一般推荐通过在APP类定义成员变量完成”伪全局“。因为APP类是整个程序唯一的,在框架内可以任何地方都可以通过((CxxApp *)AfxGetApp())-> 这样的方式访问。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式