VC 中menu怎样由灰变黑?

来源:百度知道 编辑:UC知道 时间:2024/06/22 00:54:03
我是用VC6.0的,建了个菜单,下拉中有好几个的
例如有:
ID_VIEW_TOOLBAR
ID_VIEW_STATUS_BAR
ID_WINDOW_SPLIT
我想实现:程序在刚开始运行时,第一个是灰的,等到我一个loin()函数通过了之后,第一个再变成黑的,改怎样实现呢?

利用ClassWizard类向导为ID_VIEW_TOOLBAR(你的第一个菜单项)添加更新命令用户界面UPDATE_COMMAND_UI的消息处理函数,代码像下面这个样子(这是伪代码):
void C***Doc::OnUpdateViewToolbar(CCmdUI* pCmdUI)
{
//TODO: Add your command update UI handler code here
if( loin()函数通过了 ) pCmdUI->Enable(FALSE);//禁止(变灰)
else pCmdUI->Enable(TRUE);//允许(变黑)
}

使用这个函数,至于在什么地方写,按要求来做,比如开始时候就调用,在初始化函数你写
CMenu::EnableMenuItem

UINT EnableMenuItem( UINT nIDEnableItem, UINT nEnable );

返回值:
返回以前的状态(MF_DISABLED, MF_ENABLED, 或MF_GRAYED),如果无效,则返回-1。

参数: nIDEnableItem 指定由nEnable决定的将要有效的菜单项。该参数既可以指定弹出菜单项,也可以指定标准菜单项。
nEnable 指定了将要进行的动作。它可以是MF_DISABLED, MF_ENABLED,或MF_GRAYED与 MF_BYCOMMAND或MF_BYPOSITION的组合。这些值通过位与操作进行组合。这些值有下列含义: · MF_BYCOMMAND 指定参数给出已存在的菜单项的命令ID号。此为缺省值。
· MF_BYPOSITION 指定参数给出已存在菜单项的位置。第一项所在的位置是0。
· MF_DISABLED 使菜单项无效,以便它不能被选择,但不变灰。
· MF_ENABLED 使菜单项有效,以便它能够被选择,并可从变灰的状态中恢复出来。
· MF_GRAYED 使菜单项无效,以便它不能被选择并同时变灰。

说明:
使菜单项有