可以使用EnableMenuItem启用或禁用菜单项。如何确定现有项目是否已启用?
答案 0 :(得分:4)
是否启用菜单项作为菜单项的状态信息的一部分存储。以下功能报告是否启用了菜单项(由ID标识):
bool IsMenuItemEnabled( HMENU hMenu, UINT uId ) {
UINT state = GetMenuState( hMenu, uId, MF_BYCOMMAND );
return !( state & ( MF_DISABLED | MF_GRAYED ) );
}
关于实施的一些注释:
MF_DISABLED
和MF_GRAYED
个状态。禁用的项目看起来就像启用的项目,但在其他情况下不活动。无法选择禁用或灰色项目。 1) MF_ENABLED
状态等于0.因此,无法直接测试,但必须使用表达式(请参阅GetMenuState)。
bool IsMenuItemEnabled( HMENU hMenu, UINT uId ) {
MENUITEMINFO mii = { 0 };
mii.cbSize = sizeof( mii );
mii.fMask = MIIM_STATE;
GetMenuItemInfo( hMenu, uId, FALSE, &mii );
return !( mii.fState & MFS_DISABLED );
}
MFS_DISABLED
和MFS_GRAYED
具有相同的值。