MFC 菜單ON_UPDATE_COMMAND_UI和ON_COMMAND消息區別

第一個是響應打開菜單的命令的

第二個是你打開這個菜單時,處理這個菜單的狀態,比如選中、變灰等等。

比如WINDOWS自帶的記事本程序,它的"格式"菜單下有個"自動換行",那麼在編寫記事本這個程序時,對文本進行自動換行或不自動換行的操作就要放在ON_COMMAND消息響應函數裏,而"自動換行"菜單項左邊是否打勾的操作則放在ON_UPDATE_COMMAND_UI響應函數裏.

UPDATE_COMMAND_UI

處理菜單對應的用戶界面顯示狀態

COMMAND

處理該菜單對應的功能

傳統SDK程序要改變選單命令項狀態,可以呼叫EnableMenuItem或是 CheckMenuItem,但這使得程序雜亂無章,因爲你沒有一個固定的位置和固定的原則處理命令項狀態。MFC提供一種直覺並且仍舊依賴訊息觀念的方式,解決這個問題,這就是UPDATE_COMMAND_UI訊息。其設計理念是,每當選單被拉並尚未顯示之前,其命令項(以及對應之工具欄按鈕)都會收到UPDATE_COMMAND_UI訊息,這個訊息和WM_COMMAND有㆒樣的繞行路線,我們(程序員)只要在適當的類別上放置其處理函式,並在函式上做某些判斷,便可決定如何顯示命令項。

這種方法的最大好處是,不但把問題的解決方式統化,更因爲 Framework傳給UPDATE_COMMAND_UI處理程序的參數是個「指向CCmdUI對象的指針」,而CCmdUI對象就代表着對應的選單命令項,因此你只需呼叫 CCmdUI 所準備的,專門用來處理命令項外觀的函式(如Enable或SetCheck)即可。我們的工作量大爲減輕。

原文鏈接:https://www.cnblogs.com/orez88/articles/2217823.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章