本人在做一个数据库管理系统的时候,要求当用户是普通用户的时候,点击进入的主界面的菜单栏的用户管理为灰体,但是一直在初始化里没试成功,各位看下。。
bool csjkdlg::oninitdialog()
{cdialog::oninitdialog();// add "about..." menu item to system menu.// idm_aboutbox must be in the system command range.
assert((idm_aboutbox & 0xfff0) == idm_aboutbox);
assert(idm_aboutbox < 0xf000);cmenu* psysmenu = getsystemmenu(false);
if (psysmenu != null)
{
cstring straboutmenu;
straboutmenu.loadstring(ids_aboutbox);
if (!straboutmenu.isempty())
{
psysmenu->appendmenu(mf_separator);
psysmenu->appendmenu(mf_string, idm_aboutbox, straboutmenu);
}
}// set the icon for this dialog.the framework does this automatically
//when the applications main window is not a dialog
seticon(m_hicon, true);// set big icon
seticon(m_hicon, false);// set small icon
//if(curuser.usertype == "普通用户")// todo: add extra initialization here
//添加登录对话框
clogindlg logindlg;
if(logindlg.domodal()!=idok)
{
cdialog::onok();
}
else
{
curuser.getdata(logindlg.m_username);
}
return true;
}这时我想加入一句// 普通用户没有审核权限
if(curuser.usertype == "普通用户")
getdlgitem(idc_user_button)->enablewindow(false);但是貌似这一句没法加,也不知道加哪。。我的是基于对话框的谢谢啦 我的是基于对话框的,所以用UPDATE_COMMAND_UI是不行的,我试了。。感谢。。
bool csjkdlg::oninitdialog()
{cdialog::oninitdialog();// add "about..." menu item to system menu.// idm_aboutbox must be in the system command range.
assert((idm_aboutbox & 0xfff0) == idm_aboutbox);
assert(idm_aboutbox < 0xf000);cmenu* psysmenu = getsystemmenu(false);
if (psysmenu != null)
{
cstring straboutmenu;
straboutmenu.loadstring(ids_aboutbox);
if (!straboutmenu.isempty())
{
psysmenu->appendmenu(mf_separator);
psysmenu->appendmenu(mf_string, idm_aboutbox, straboutmenu);
}
}// set the icon for this dialog.the framework does this automatically
//when the applications main window is not a dialog
seticon(m_hicon, true);// set big icon
seticon(m_hicon, false);// set small icon
//if(curuser.usertype == "普通用户")// todo: add extra initialization here
//添加登录对话框
clogindlg logindlg;
if(logindlg.domodal()!=idok)
{
cdialog::onok();
}
else
{
curuser.getdata(logindlg.m_username);
}
return true;
}这时我想加入一句// 普通用户没有审核权限
if(curuser.usertype == "普通用户")
getdlgitem(idc_user_button)->enablewindow(false);但是貌似这一句没法加,也不知道加哪。。我的是基于对话框的谢谢啦 我的是基于对话框的,所以用UPDATE_COMMAND_UI是不行的,我试了。。感谢。。
if(pMenu && pMenu->GetSafeHmenu())
{
pMenu->EnableMenuItem(ID_MENUITEM32772, MF_BYCOMMAND|MF_GRAYED);
}
因为ON_UPDATE_COMMAND_UI是在CWinApp的WM_KICKIDLE消息处理中实现的而模态对话框有自己的消息循环,所以不会调用OnUpdateTskNew(CCmdUI* pCmdUI)之类的函数
简单的方法:
你可以先CToolBar的GetToolBarCtrl得到CToolBarCtrl,然后调用CToolBarCtrl的EnableButton完美的方法:
自己处理MFC的WM_KICKIDLE消息,在消息处理函数中加入一句UpdateDialogControls(this, FALSE);
照到这篇文章:基于对话框灰化菜单栏。。