MFC开发出来的窗体程序,菜单打开时会自动隐藏,如下图。

如何才能不让菜单隐藏呢?
可以想想窗口程序是从CMainFrame类启动的,那就到MainFrame.cpp中的OnCreate方法来找,终于找到了,这段代码就是解决这个问题的。
// 启用菜单个性化(最近使用的命令)
// TODO: 定义您自己的基本命令,确保每个下拉菜单至少有一个基本命令。
CList<UINT, UINT> lstBasicCommands;
lstBasicCommands.AddTail(ID_User_Manager);
lstBasicCommands.AddTail(ID_MIMA_XIUGAI);
lstBasicCommands.AddTail(ID_FILE_NEW);
lstBasicCommands.AddTail(ID_FILE_OPEN);
lstBasicCommands.AddTail(ID_FILE_SAVE);
lstBasicCommands.AddTail(ID_FILE_PRINT);
lstBasicCommands.AddTail(ID_APP_EXIT);
lstBasicCommands.AddTail(ID_EDIT_CUT);
lstBasicCommands.AddTail(ID_EDIT_PASTE);
lstBasicCommands.AddTail(ID_EDIT_UNDO);
lstBasicCommands.AddTail(ID_APP_ABOUT);
lstBasicCommands.AddTail(ID_32818);#把你的菜单加进去就可了
lstBasicCommands.AddTail(ID_User_OperationLog);
lstBasicCommands.AddTail(ID_DOCUMENT);
lstBasicCommands.AddTail(ID_SENSOR_PIC);
lstBasicCommands.AddTail(ID_VIEW_STATUS_BAR);
lstBasicCommands.AddTail(ID_VIEW_TOOLBAR);
lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2003);
lstBasicCommands.AddTail(ID_VIEW_APPLOOK_VS_2005);
lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLUE);
lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_SILVER);
lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLACK);
lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_AQUA);
lstBasicCommands.AddTail(ID_VIEW_APPLOOK_WINDOWS_7);
CMFCToolBar::SetBasicCommands(lstBasicCommands);
修改完毕,重新编译,问题解决,通过。
本文详细介绍了在MFC开发中,如何通过修改CMainFrame类的OnCreate方法来解决菜单自动隐藏的问题。通过定义一系列基本命令并将其添加到CList中,再调用CMFCToolBar::SetBasicCommands方法,实现菜单个性化,避免菜单在打开时自动隐藏。
911

被折叠的 条评论
为什么被折叠?



