VS 2017 MFC 使用代碼 GetMenu() 修改菜單樣式

1. 新建文檔,選擇單個文檔,MFC standard (其他的設置好像不行)

2. 在 CMainFrame.cpp的OnCreate方法最後加入

CMenu *menu = GetMenu();

    //獲取子菜單
    CMenu *fileMenu = menu->GetSubMenu(0);

   //勾選
    fileMenu->CheckMenuItem(2, MF_BYPOSITION | MF_CHECKED);     //第一個參數由MF_BYPOSITION決定
    fileMenu->CheckMenuItem(ID_FILE_OPEN, MF_BYCOMMAND | MF_CHECKED);//第一個參數由MF_BYCOMMAND決定

    //默認項(會加粗)一個菜單項只有一個默認菜單
    //第二個參數FASLE表示爲ID , TRUE表示用位置
    fileMenu->SetDefaultItem(ID_FILE_PRINT, FALSE);
    //fileMenu->SetDefaultItem(2, TRUE);

 

如果要讓菜單不可用,先在構造函數取消自動enable

CMainFrame::CMainFrame() noexcept
{
	// TODO: 在此添加成員初始化代碼
	m_bAutoMenuEnable = FALSE;
}

讓後再剛剛OnCreate的後面加入

fileMenu->EnableMenuItem(1, MF_BYPOSITION | MF_DISABLED); //會自動變灰色

 

如果出現的結果和預期不同,檢查下資源視圖裏是否修改了默認設置,修改後的設置與代碼衝突

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章