不想CMenu折叠子菜单
时间: 2023-09-02 11:09:52 浏览: 97
如果你不想让 CMenu 自动折叠子菜单,可以通过以下方法来实现:
1. 将 CMenu 的样式设置为 MNS_MODELESS,这样就可以防止 CMenu 自动折叠子菜单。具体实现方式是在创建 CMenu 对象时,将菜单的样式设置为 MNS_MODELESS,示例代码如下:
```
CMenu menu;
menu.CreateMenu();
menu.SetMenuStyle(MNS_MODELESS);
```
2. 将所有的子菜单都添加到一个“更多”菜单项的下面,这样可以避免子菜单数量过多导致 CMenu 自动折叠子菜单。具体实现方式是在创建 CMenu 对象时,先创建一个“更多”菜单项,然后将所有的子菜单都添加到“更多”菜单项的下面,示例代码如下:
```
CMenu menu;
menu.CreateMenu();
menu.AppendMenu(MF_STRING, ID_MORE, _T("More"));
menu.AppendMenu(MF_POPUP, (UINT_PTR)submenu1->m_hMenu, _T("Submenu1"));
menu.AppendMenu(MF_POPUP, (UINT_PTR)submenu2->m_hMenu, _T("Submenu2"));
// 将所有的子菜单添加到“更多”菜单项的下面
CMenu* moreMenu = menu.GetSubMenu(0);
moreMenu->AppendMenu(MF_POPUP, (UINT_PTR)submenu3->m_hMenu, _T("Submenu3"));
moreMenu->AppendMenu(MF_POPUP, (UINT_PTR)submenu4->m_hMenu, _T("Submenu4"));
```
以上两种方法可以避免 CMenu 自动折叠子菜单,根据实际需求选择适合的方法即可。