MFC的UI更新機制和加速鍵的建立

       近期在看《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

Specifies the check state to set. If 0, unchecks; if 1, checks; and if 2, sets indeterminate

指定菜單項的狀態是否被選中,當參數nCheck = 1時,狀態爲選中。nCheck =0時,狀態爲未選中,nCheck = 2時,該菜單項的狀態不肯定。

void SetRadio( BOOL bOn = TRUE );

Like the SetCheck member function, but operates on radio groups.

該函數的設置相似SetCheck ,但是該函數應用於單選組合框中。

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

相關文章
相關標籤/搜索