在VS 2008 Feature Pack後MFC的menu有了expand的style,VS 2010進一步整合feature pack的GUI行為在建立專案時就可以選擇新的menu style。
不過新功能有一個很不好用的地方,不管你應用程式中的選單數量是多還是少,都會預設的收折(collapse)。
選單收折的新功能是由下面這段程式碼所引發
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
CList< UINT, UINT> lstBasicCommands;
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_VIEW_STATUS_BAR);
lstBasicCommands.AddTail(ID_VIEW_TOOLBAR);
CMFCToolBar::SetBasicCommands(lstBasicCommands);
}
CMFCToolBar::SetBasicCommands是採正面列表的方式,指定基本選單。這些基本選單在使用者點選選單時,會保持可視狀態而不會被隱藏,而不在清單中的選單則自動收藏起來。因此如果你的選單是不想被收折起來,只要把選單的ID加入到lstBasicCommands中即可。
如果應用程式不希望有收折的功能,則只要把這段程式刪除即可。