如何让点右键上出现的菜单中各栏目在特定的时候变灰 我编辑了一个菜单,让其在点鼠标右键时出现,我希望其中的菜单项在一定条件下是灰的,请问该怎么做。我试过加入一个OnUpdate*的函数,可是我debug的时候发现这个函数并不是在菜单出现时响应,而是要点该菜单项以后才响应,这点似乎跟窗口上的那些下拉菜单不一样,请问要怎么使右键出来的菜单中项目变灰 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CMenu menu; ClientToScreen(&point); VERIFY( menu.LoadMenu( IDR_MENU1 ) ); CMenu* popup = menu.GetSubMenu(0); ASSERT( popup != NULL ); popup->EnableMenuItem(ID_POPUP1, MF_BYCOMMAND|MF_GRAYED); popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this ); //注意:必须要在TrackPopupMenu之前EnableMenuItem,否则无效 To lixiaosan:我按你说的方法进行了修改,把你给的代码加到了void CImgContainerWnd::OnContextMenu(CWnd* pWnd, CPoint point) 中,然后通过classwizard给ID_POPUP1加入了UPDATE_COMMAND_UI的响应消息,可是执行后那个菜单项始终都是灰的,debug的时候我发现程序根本没跳到onUpdata*(……)的这个函数中,请问这是为什么 土方法:CMenu menu;CMenu* popup = menu.GetSubMenu(0);popup->TrackPopupMenu(......); 响应UPDATE_COMMAND_UI,在响应函数里面添加pCmdUI->Enable(IsXXX(...))其中IsXXX(..)函数是自己添加的在里面可以判定特定条件后返回true or false 强烈反对 现在怎么没有 将帖子提前功能啦!!!!! 关于数据库取值的问题 UDP服务端怎么知道发送数据正确到达客户端 MYSQL最常用的管理软件哪种比较好~~~ 如何得到catch时出错的代码行数? 初学者的困惑,请指教 初用VC-OverFlow-郁闷! 使用WaitCommEvent捕获串口事件后如何正常关闭串口? Windows和Linux下socket在网线被拔出之后的不同后果 请教高手如何设置DOS程序的环境路径 各位,MSDN是怎么安装的? opengl 的调用auxWireSphere(),auxWireCyllinder()出现内存泄露
ClientToScreen(&point);
VERIFY( menu.LoadMenu( IDR_MENU1 ) );
CMenu* popup = menu.GetSubMenu(0);
ASSERT( popup != NULL );
popup->EnableMenuItem(ID_POPUP1, MF_BYCOMMAND|MF_GRAYED);
popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this ); //注意:必须要在TrackPopupMenu之前EnableMenuItem,否则无效
我按你说的方法进行了修改,把你给的代码加到了void CImgContainerWnd::OnContextMenu(CWnd* pWnd, CPoint point) 中,然后通过classwizard给ID_POPUP1加入了UPDATE_COMMAND_UI的响应消息,可是执行后那个菜单项始终都是灰的,debug的时候我发现程序根本没跳到onUpdata*(……)的这个函数中,请问这是为什么
CMenu menu;
CMenu* popup = menu.GetSubMenu(0);
popup->TrackPopupMenu(......); 响应UPDATE_COMMAND_UI,在响应函数里面添加
pCmdUI->Enable(IsXXX(...))
其中IsXXX(..)函数是自己添加的
在里面可以判定特定条件后返回true or false