MFC 彈出式選單項 如何新增訊息響應函式 如何灰化
阿新 • • 發佈:2019-02-09
也許你跟我一樣,在彈出式選單中新增完選單項後,執行後花現,選單項是灰色滴
這是因為該選單項木有與之對應的訊息處理函式,所以預設是灰色滴
新增是很簡單的事兒
在標頭檔案中新增
afx_msg void OnNetPortSet(void);
在原始檔中新增
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx)
ON_COMMAND(ID_MODIFYPORT, &CMainFrame::OnNetPortSet)
END_MESSAGE_MAP()
ID_MODIFYPORT是選單項的ID號,OnNetPortSet()選單項的訊息處理函式。你就可以在這裡面新增使用者選擇該選單項後所做的事情了啊
如果要讓彈出式選單的某個選單項,灰化,使用下面這個函式吧EnableMenuItem(m_hMainMenu, i, MF_BYPOSITION |MF_GRAYED)
具體函式使用說明如下
允許或禁止指定的選單條目
BOOL EnableMenuItem(HMENU hMenu,UINT uIDEnableItem, UINT uEnable); 返回值 : BOOL 判斷是否成功 引數表 : 引數 型別及說明 hMenu ,選單控制代碼 wIDEnableItem ,欲允許或禁止的一個選單條目的識別符號。如果在wEnable引數中設定了MF_BYCOMMAND標誌,這個引數就代表欲改變選單條目的命令ID。如設定的是MF_BYPOSITION,則這個引數代表選單條目在選單中的位置(第一個條目肯定是零) wEnable ,參考ModifyMenu函式中的選單常數標誌定義表,其中列出了允許使用的所有常數。對於這個函式,只能指定下述常數:MF_BYCOMMAND,MF_BYPOSITION,MF_ENABLED,MF_DISABLED以及MF_GRAYED 這些值有下列含義: · MF_BYCOMMAND 指定引數給出已存在的選單項的命令ID號。此為預設值。 · MF_BYPOSITION 指定引數給出已存在選單項的位置。第一項所在的位置是0。 · MF_DISABLED 使選單項無效,以便它不能被選擇,但不變灰。 · MF_ENABLED 使選單項有效,以便它能夠被選擇,並可從變灰的狀態中恢復出來。 · MF_GRAYED 使選單項無效,以便它不能被選擇並同時變灰。