1. 程式人生 > >MFC 彈出式選單項 如何新增訊息響應函式 如何灰化

MFC 彈出式選單項 如何新增訊息響應函式 如何灰化

也許你跟我一樣,在彈出式選單中新增完選單項後,執行後花現,選單項是灰色滴

這是因為該選單項木有與之對應的訊息處理函式,所以預設是灰色滴

新增是很簡單的事兒

在標頭檔案中新增

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 使選單項無效,以便它不能被選擇並同時變灰。