请教各位大虾,如何在一个弹出菜单中,当一个菜单项被点击后变成无效,而其他菜单项却变成有效?

wxsdragon 2004-12-05 11:50:36
请教各位大虾,如何在一个弹出菜单中,当一个菜单项被点击后变成无效,而其他菜单项却变成有效?
...全文
180 13 打赏 收藏 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanw0212 2004-12-06
  • 打赏
  • 举报
回复
pCmdUI->Enable(FALSE);
wxsdragon 2004-12-06
  • 打赏
  • 举报
回复
to I_Love_CPP;
   也不行哦
I_Love_CPP 2004-12-06
  • 打赏
  • 举报
回复
你在象void CxxxView::OnUpdateThisItem(CCmdUI* pCmdUI)调用其它OnUpdateOtherItem(CCmdUI* pCmdUI)不就OK了吗?
wxsdragon 2004-12-06
  • 打赏
  • 举报
回复
up
I_Love_CPP 2004-12-05
  • 打赏
  • 举报
回复
Q:当一个菜单项被点击后变成无效,而其他菜单项却变成有效?

A:可用一个BOOL变量控制该菜单项。如果是多个菜单项可以用BOOL数组。
wxsdragon 2004-12-05
  • 打赏
  • 举报
回复
怎么我用下面的函数却不能载入此菜单?是不是弹出菜单被弹出后就不能再载入,各位有什么好方法没有?
BOOL CVisualChartView::SetMenuItemState(int nMenuItem)
{
int nMenuID = -1;
int iRet;
CMenu menu;
CMenu *pSubMenu;

iRet = menu.LoadMenu(IDM_AVERSION);

if (iRet)
{
pSubMenu = menu.GetSubMenu(0);

if ( pSubMenu)
{
for (int i = 0; i < 4; i++)
{
switch (i)
{
case 0:
nMenuID = IDM_AVERSION;
break;
case 1:
nMenuID = IDM_BVERSION;
break;
case 2:
nMenuID = IDM_ONLYA;
break;
case 3:
nMenuID = IDC_BVERSIONONLY;
break;
}

if ( i == nMenuItem)
{
pSubMenu->CheckMenuItem(nMenuID, MF_CHECKED);
}
else
{
pSubMenu->CheckMenuItem(nMenuID, MF_UNCHECKED);
}


}
}
}
else
{
return FALSE;
}

return TRUE;
}
wxsdragon 2004-12-05
  • 打赏
  • 举报
回复
不好意思,可能是我没有把问题说得很清楚:
我的意思是,当点击弹出菜单的某一有效项时,把当前菜单项变成无效,而其他项变成有效,也就是每次只能有一个菜单项无效,其他菜单项都是有效的!某一无效的菜单项要变成有效,不是通过点击自己实现的,而是通过点击其他菜单项实现的.
好象void CxxxView::OnUpdateThisItem(CCmdUI* pCmdUI)每次只能是针对当前菜单项的,不能对其他菜单项有效的吧

qrlvls 2004-12-05
  • 打赏
  • 举报
回复
执行
qrlvls 2004-12-05
  • 打赏
  • 举报
回复
处理COMMAND_UI消息
根据条件在 OnUpdateXXXX(CCmdUI *pCmdUI)中判断如果需要禁止则 pCmdUI->Enable(FALSE);否则 pCmdUI->Enable(TRUE);
OnUpdateXXXX 函数将在用户点击菜单项上的主分支时招待
I_Love_CPP 2004-12-05
  • 打赏
  • 举报
回复
bool m_bShow = false;

void CxxxView::OnUpdateThisItem(CCmdUI* pCmdUI)
{
if(m_bShow)
{
pCmdUI->Enable(false);
m_bshow = !m_bshow;
}
else
{
pCmdUI->Enable(true);
m_bshow = !m_bshow;
}

}

void CxxxView::OnUpdateOtherItem(CCmdUI* pCmdUI)
{
if(m_bShow)
{
pCmdUI->Enable(true);
}
else
{
pCmdUI->Enable(false);
}

}
wxsdragon 2004-12-05
  • 打赏
  • 举报
回复
我用了这个函数,可pCmdUI->Enable(FALSE)只能使当前被点击的菜单项变成无效,但却不能使其他无效的菜单项变成有效啊!
KOBEBRYANT8 2004-12-05
  • 打赏
  • 举报
回复
pCmdUI->Enable(FALSE);
wxsdragon 2004-12-05
  • 打赏
  • 举报
回复
I_Love_CPP(我爱C++)
可以告诉我具体怎么实现吗?问题是怎么能得到其他菜单项啊
内容概要:本文研究了计及需求侧响应的日前、日内两阶段鲁棒备用优化问题,提出了一种基于数据驱动的两阶段分布鲁棒优化方法,结合1-范数和∞-范数构造不确定性集合,有效刻画风电、光伏出力及负荷等多重不确定因素的波动特性。研究构建了电热综合能源系统的联合优化模型,通过协调日前调度计划与日内实时调整,充分发挥需求侧响应资源的灵活调节能力,提升系统在不确定性环境下的备用充裕性与运行鲁棒性,并采用Matlab进行建模与仿真验证,结果表明该方法在保障系统安全的同时显著改善了经济性。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力的研究生、科研人员,以及从事新型电力系统调度、综合能源系统规划与运行的工程技术人员。; 使用场景及目标:①应用于高比例可再生能源接入背景下电力系统备用容量的优化配置;②为综合能源系统在多重不确定性下的鲁棒调度提供决策支持;③支撑需求侧资源参与系统辅助服务的机制设计与仿真验证,推动源荷互动协调发展。; 阅读建议:建议读者结合Matlab代码深入理解两阶段鲁棒优化的建模过程,重点关注不确定性集构建、鲁棒约束转化及C&CG等求解算法的实现细节,可进一步拓展至其他分布鲁棒优化形式或耦合更多能源形式的综合能源系统场景。

16,550

社区成员

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

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

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