VC++里怎么设置弹出式菜单部分菜单项的禁用

来源:百度知道 编辑:UC知道 时间:2024/06/01 12:15:12
普通菜单项可以通过UPDATE_COMMAND_UI实现对其禁用,那弹出式菜单呢?怎么设置能使部分弹出式菜单项根据不同条件实现禁用与激活呢?万分感谢!!!
UPDATE_COMMAND_UI下的(我已经建好了普通菜单项
void CMysdiDoc::OnUpdateCoinSub(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
if (m_nCoins<1) pCmdUI->Enable(FALSE);
else pCmdUI->Enable(TRUE);

}
然后设置了刚才普通式的弹出式(普通式的还存在)
void CMysdiView::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: Add your message handler code here
CMenu menuPopup;
if(menuPopup.CreatePopupMenu())
{
menuPopup.AppendMenu(MF_STRING,ID_COIN_ADD,"增加硬币\tCtrl+A");
menuPopup.AppendMenu(MF_STRING,ID_COIN_SUB,"减少硬币\tCtrl+B");
menuPopup.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);

}
}
但是结果普通菜单项禁用了,弹出式的没有

TrackPopupMenu 具体怎么设置啊?
我是说禁用其中的某一项,弹出式菜单还是能弹出来的

1、想要的功能时 未登陆 菜单栏亮 登陆菜单栏灰吗
要改变的菜单栏添加ON_UPDATE_COMMAND_UI消息
设置一个全局变量来监听 是否登陆,当登陆就调用
menu.EnableMenuItem(ID_CHANGE,MF_DISABLED | MF_GRAYED);
2、例子:
void CMysdiDoc::OnUpdateCoinSub(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
UpdateData(TRUE);
if (m_nCoins<1) pCmdUI->Enable(FALSE);
else pCmdUI->Enable(TRUE);
UpdateData(FALSE);
}

弹出式菜单不能用 UPDATE_COMMAND_UI 的方式自动设置菜单项状态,应该在 TrackPopupMenu 的前面,根据你自己设置的条件,自行设置各菜单项的状态。

是一样的. 发代码来看看。
void CMysdiDoc::OnUpdateCoinSub(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
UpdateData(TRUE);
if (m_nCoins<1) pCmdUI->Enable(FALSE);
else pCmdUI->Enable(TRUE);
UpdateData(FALSE);
}
//加断点看看m_nCoins的值是不是对.