c ++ windows api:禁用菜单是否为灰色?

Cha*_* S. 8 c++ windows winapi

我正在测试Windows API的菜单状态(禁用,灰显,检查......)但是有些东西我不明白.该文件,各国MF_DISABLED不灰色的项目,但这里是我得到:

在此输入图像描述

使用此代码:

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);
Run Code Online (Sandbox Code Playgroud)

如何禁用未显示灰色的禁用菜单项?

Ron*_*Ron 7

这两个现在是一样的.有关详细信息,请参阅tagMENUITEMINFOA.

无论MFS_DISABLEDMFS_GRAYED现在是灰色的,因为它们代表相同的值0x00000003L

  • 实际上,OP 提到的是“MF_GRAYED”和“MF_DISABLED”,它们具有不同的值,而不是“MFS_GRAYED”和“MFS_DISABLED”,它们具有相同的值,所以我的评论有些误导。 (2认同)