一个初学者的问题

xzou 2000-06-14 06:46:00
有人能告诉我如何实现对某些菜单项的屏蔽吗?(例如将此菜单项变灰)
我想实现的是这样一个事实,会员从CloginDlg上验证登录,假设当返回值为0时,我就把
IDR_MAINFRAME中的ID为ID_ADD的菜单变为灰色(或其他方式)屏蔽,请问该怎么办?VC我一直也未入其门,能否请大家将学习技巧告知一二?
...全文
89 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzou 2000-06-19
  • 打赏
  • 举报
回复
还是我学疏才浅,果真只是简单的用一下OnUpdateAdd(CCmdUI* pCmdUI)。
ad 2000-06-14
  • 打赏
  • 举报
回复
对于每个菜单项可以通过向导添加两个函数,一个是响应选择菜单项的操作函数,还有一个是当菜单项显示时对该菜单项的更新函数。例如:
void CMainFrame::OnAdd()
{
//do what u want to do
}

void CMainFrame::OnUpdateAdd(CCmdUI* pCmdUI)
{
bool b = 测试条件是否能选中该菜单项;
pCmdUI->Enable(b);
//你还可以试一试pCmdUI->SetCheck(1 or 0) 和pCmdUI->SetText("&asdasd");
}
fuzhenxing 2000-06-14
  • 打赏
  • 举报
回复
请看下面的示例代码:
void CMyView::OnRButtonDown(UINT nFlags, CPoint point)
{
CScrollView::OnRButtonDown(nFlags, point);

CMenu *menu, *popup;
menu = new CMenu();

// load menu from resource file
menu->LoadMenu( IDR_POPUPMENU );
popup = menu->GetSubMenu(0); // item 0 is DUMMY

UINT nEnable;
nEnable = MF_BYCOMMAND|MF_GRAYED;

if( your test )
{
nEnable = MF_BYCOMMAND|MF_ENABLED;
}

popup->EnableMenuItem( ID_YOUR_ID, nEnable );

//display menu
ClientToScreen(&point);
popup->TrackPopupMenu(
TPM_LEFTALIGN | TPM_RIGHTBUTTON,
point.x, point.y, this );
delete menu;
}

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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