CMenu menu; ClientToScreen(&point); VERIFY(menu.LoadMenu(IDR_MENU1)); CMenu* popup = menu.GetSubMenu(0); ASSERT(popup != NULL); // 停用指定項目 popup->EnableMenuItem(ID_POPUP1, MF_BYCOMMAND | MF_GRAYED); // 修改項目文字 popup->ModifyMenu(ID_POPUP1, MF_BYCOMMAND, ID_POPUP1, "11"); // 顯示彈出選單 popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
LoadMenu 載入選單資源(含子選單)。GetSubMenu(0) 取得第一層彈出選單指標。EnableMenuItem 搭配 MF_GRAYED 可視覺停用項目。ModifyMenu 以 MF_BYCOMMAND 依命令 ID 修改文字,保持 ID 不變。TrackPopupMenu 在滑鼠位置顯示選單,TPM_RIGHTBUTTON 允許右鍵選取。依據程式狀態(如選取項目型別、使用者權限)動態調整右鍵選單可用項目與顯示文字,提升介面互動彈性。