@H_301_3@
在我的基于MFC对话框的应用程序中,我使用Visual Studio资源编辑器创建了主菜单,并且在一个位置有动态菜单,在运行时创建.使用Visual Studio创建的菜单的所有部分都具有现代外观,我动态创建的子菜单具有旧外观,如下图所示.
我创建动态子菜单的代码是这样的(不是真正的代码,但真正的代码并不是那么重要):
CMenu subMenu; subMenu.CreateMenu(); for (...) { subMenu.AppendMenu( MF_STRING | (isChecked ? MF_CHECKED : MF_UNCHECKED),<some menu ID>,<some menu text>); }
TCHAR szMenuString[256]; MENUITEMINFO mii; mii.cbSize = sizeof(mii); mii.fMask = MIIM_STATE | MIIM_ID | MIIM_SUBMENU | MIIM_CHECKMARKS | MIIM_DATA | MIIM_STRING | MIIM_BITMAP | MIIM_FTYPE; mii.dwTypeData = szMenuString; mii.cch = sizeof(szMenuString) / sizeof(szMenuString[0]); GetMenu()->GetMenuItemInfo(ID_SUBMENU,&mii); mii.fMask |= MIIM_SUBMENU; mii.hSubMenu = subMenu.GetSafeHmenu(); GetMenu()->SetMenuItemInfo(ID_SUBMENU,&mii);
我的代码是用MFC编写的,但你的答案不一定是在MFC中(也可能不是).
解决方法
@H_301_3@