VC++里怎么设置弹出式菜单部分菜单项的禁用
普通菜单项可以通过UPDATE_COMMAND_UI实现对其禁用,那弹出式菜单呢?怎么设置能使部分弹出式菜单项根据不同条件实现禁用与激活呢?万分感谢!!!UPDATE_C...
普通菜单项可以通过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 具体怎么设置啊?
我是说禁用其中的某一项,弹出式菜单还是能弹出来的 展开
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 具体怎么设置啊?
我是说禁用其中的某一项,弹出式菜单还是能弹出来的 展开
展开全部
弹出式菜单不能用 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的值是不是对.
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的值是不是对.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
要改变的菜单栏添加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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询