【发布时间】:2011-12-04 15:47:14
【问题描述】:
我正在使用 Visual C++ 6.0 开发一个项目,我需要能够根据分配给当前登录用户的权限启用或禁用某些菜单项。这是我正在使用的代码:
// If the currently logged in user doesn't have permission to edit invoices
if (!((CMyApp *)AfxGetApp())->UserHasPermission(PERMISSION_EditInvoice))
{
// Disable the Edit Menu
pMain->EnableMenuItem(1, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);
}
else
{
// Enable the Edit Menu
pMain->EnableMenuItem(1, MF_BYPOSITION | MF_ENABLED);
}
它完全符合我的要求,但我正在努力寻找放置它的最佳位置。如果我把它放在OnInitialUpdate() 中,我会得到我想要的结果,但仅限于打开的第一张发票。如果您打开第二张发票而不关闭并重新打开对话框,则不会再次执行代码。 OnUpdate() 在打开不同的发票时不会被调用,我发现唯一可以工作的地方是OnDraw(),OnDraw() 的问题是菜单项在视觉上没有从灰色变为灰色启用,反之亦然,直到您尝试单击它。
【问题讨论】:
标签: c++ visual-c++ mfc