C++ Windows API:禁用菜单变灰?

8
我正在测试Windows API的菜单状态(禁用、灰色、选中等),但有些东西我不理解。 文档说明MF_DISABLED不会使项目变灰,但这是我得到的结果:

enter image description here

使用以下代码:

HMENU menuBar = CreateMenu();
HMENU hopMenu = CreateMenu();

AppendMenuW(menuBar, MF_POPUP, (UINT_PTR)hopMenu, L"hop");
AppendMenuW(hopMenu, MF_STRING, 0, L"Enabled");

AppendMenuW(hopMenu, MF_STRING | MF_DISABLED, 1, L"Disabled");
AppendMenuW(hopMenu, MF_STRING | MF_GRAYED, 2, L"Grayed");
AppendMenuW(hopMenu, MF_STRING | MF_CHECKED, 3, L"Checked");

AppendMenuW(hopMenu, MF_STRING | MF_DISABLED | MF_CHECKED, 4, L"Disabled && Checked");
AppendMenuW(hopMenu, MF_STRING | MF_DISABLED | MF_GRAYED, 5, L"Disabled && Grayed");

AppendMenuW(hopMenu, MF_STRING | MF_CHECKED | MF_GRAYED, 6, L"Checked && Grayed");

SetMenu(hwnd, menuBar);

我该如何使禁用的菜单项不变灰呢?
1个回答

7

现在这两个是相同的。有关更多信息,请参见tagMENUITEMINFOA

现在MFS_DISABLEDMFS_GRAYED都被灰掉了,因为它们表示相同的值0x00000003L


1
实际上,MFS_DISABLEDMFS_GRAYED 的值完全相同。 - Jabberwocky
2
实际上,OP 提到的是 MF_GRAYEDMF_DISABLED,它们的值并不相同,而不是 MFS_GRAYEDMFS_DISABLED,后者的值是相同的。因此,我的评论有些误导。 - Jabberwocky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接