mfc 菜单项变灰
记事本,文本编辑框里没内容时,想使菜单项变灰,我用enablemenuitem可以使菜单项变灰,不可用。但要是输入文字后,能使菜单项可用,怎么做?要写到哪?...
记事本,文本编辑框里没内容时,想使菜单项变灰,
我用enablemenuitem可以使菜单项变灰,不可用。
但要是输入文字后,能使菜单项可用,怎么做?
要写到哪? 展开
我用enablemenuitem可以使菜单项变灰,不可用。
但要是输入文字后,能使菜单项可用,怎么做?
要写到哪? 展开
2个回答
展开全部
首先,要想控制系统的初始化效果,需要添加Test的InitInstance()虚函数,在里面写菜单栏的置灰操作,代码如下:
CMenu* submenu = m_pMainWnd->GetMenu();
submenu->EnableMenuItem(1,MF_BYPOSITION | MF_ENABLED | MF_GRAYED);
用到了变量m_pMainWnd,这个是系统定义的窗口句柄;函数EnableMenuItem(),这里的含义是:是对菜单栏上第二个菜单项进行置灰操作,由于在系统的顶级菜单项没有ID,因此,我通过指定位置的方式进行。
在需要使菜单栏生效的地方,只要做相反的操作即可。代码如下:
CMenu* pMenu = AfxGetMainWnd()->GetMenu();
pMenu->EnableMenuItem(1,MF_BYPOSITION | MF_ENABLED );
这样就完成了菜单栏上菜单项的控制操作。
CMenu* submenu = m_pMainWnd->GetMenu();
submenu->EnableMenuItem(1,MF_BYPOSITION | MF_ENABLED | MF_GRAYED);
用到了变量m_pMainWnd,这个是系统定义的窗口句柄;函数EnableMenuItem(),这里的含义是:是对菜单栏上第二个菜单项进行置灰操作,由于在系统的顶级菜单项没有ID,因此,我通过指定位置的方式进行。
在需要使菜单栏生效的地方,只要做相反的操作即可。代码如下:
CMenu* pMenu = AfxGetMainWnd()->GetMenu();
pMenu->EnableMenuItem(1,MF_BYPOSITION | MF_ENABLED );
这样就完成了菜单栏上菜单项的控制操作。
展开全部
case WM_INITMENUPOPUP:
{
//当菜单要弹出时,会触发这个消息。改变你的菜单状态
HMENU hSubMenu=(HMENU)wParam;
CheckMenuItem(hSubMenu,6, MF_BYCOMMAND | config.IsAutoHide ? MF_CHECKED : MF_UNCHECKED );
CheckMenuItem(hSubMenu,7, MF_BYCOMMAND | config.IsReceive ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hSubMenu,4, MF_BYCOMMAND | config.IsAutoWidth? MF_CHECKED : MF_UNCHECKED);
}
break;
{
//当菜单要弹出时,会触发这个消息。改变你的菜单状态
HMENU hSubMenu=(HMENU)wParam;
CheckMenuItem(hSubMenu,6, MF_BYCOMMAND | config.IsAutoHide ? MF_CHECKED : MF_UNCHECKED );
CheckMenuItem(hSubMenu,7, MF_BYCOMMAND | config.IsReceive ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hSubMenu,4, MF_BYCOMMAND | config.IsAutoWidth? MF_CHECKED : MF_UNCHECKED);
}
break;
追问
这个函数要写到哪啊
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询