近期在看《MFC Windows程序設計》這本書,正好看到更新菜單中的菜單項和加入菜單項的加速鍵這方面的內容,下面總一下總結。小程序
MFC提供的更新菜單項的機制例如如下:函數
經過消息映射表中的ON_UPDATE_COMMAND_UI宏。可以給單個的菜單項分配選中的成員函數做爲更新處理函數,當用戶點中一個下拉菜單時,MFC捕獲隨之發生的WM_INITMENUPOPUP消息,並調用菜單中的所有菜單項的更新處理函數。post
每個更新處理函數得到一個指向CCmdUI對象的指針,並利用該對象的成員處理函數更新菜單項。this
順便介紹一下CCmdUI類spa
如下是該類的部分紅員函數:.net
void Enable( BOOL bOn = TRUE );設計
Enables or disables the user-interface item for this command.使界面的菜單項等有效或者失效。當參數bOn = TRUE的時候,使菜單項有效,反之,使無效。指針
void SetCheck( int nCheck = 1 );對象
Sets the check state of the user-interface item for this command
ci
指定菜單項的狀態是否被選中,當參數nCheck = 1時,狀態爲選中。nCheck =0時,狀態爲未選中,nCheck = 2時,該菜單項的狀態不肯定。
void SetRadio( BOOL bOn = TRUE );
Like the SetCheck member function, but operates on radio groups.
void SetText( LPCTSTR lpszText);
Sets the text for the user-interface item for this command.
設置菜單項的正文爲參數lpszText的內容。
加入菜單項的快捷鍵的方法
單擊工做空間的Resource View標籤,打開要編輯的加速鍵資源
雙擊空白項出現例如如下圖的對話框
在ID處加入上要建立加速鍵的菜單項ID
在key處加入相應的快捷鍵的虛擬鍵代碼或者點擊Next Key Typed 直接輸入所選擇的快捷鍵就能夠
如下的連接是我實現的快捷鍵和更新菜單項狀態的小程序,供你們參考。
http://download.csdn.net/my