轉(zhuǎn)帖|使用教程|編輯:鮑佳佳|2020-12-28 14:48:37.870|閱讀 745 次
概述:MFC為對話框和控件等定義了諸多消息,我們對它們操作時會觸發(fā)消息,這些消息最終由消息處理函數(shù)處理。比如我們點擊按鈕時就會產(chǎn)生BN_CLICKED消息,修改編輯框內(nèi)容時會產(chǎn)生EN_CHANGE消息等。一般為了讓某種操作達到效果,我們只需要實現(xiàn)某個消息的消息處理函數(shù)。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
創(chuàng)建對話框類和添加控件變量在上一講中已經(jīng)講過,這一講的主要內(nèi)容是如何為控件添加消息處理函數(shù)。
MFC為對話框和控件等定義了諸多消息,我們對它們操作時會觸發(fā)消息,這些消息最終由消息處理函數(shù)處理。比如我們點擊按鈕時就會產(chǎn)生BN_CLICKED消息,修改編輯框內(nèi)容時會產(chǎn)生EN_CHANGE消息等。一般為了讓某種操作達到效果,我們只需要實現(xiàn)某個消息的消息處理函數(shù)。當功能實現(xiàn)了想要擁有美觀的界面可以借助Toolkit Pro進行界面優(yōu)化。
Xtreme Toolkit Pro:是屢獲殊榮的VC界面庫,是MFC開發(fā)中最全面界面控件套包,它提供了Windows開發(fā)所需要的11種主流的Visual C++ MFC控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和Task Panel。
一.添加消息處理函數(shù)
以前面的加法計算器的程序為例,說明怎樣為“計算”按鈕控件添加消息處理函數(shù)。添加方法列出4種:
1.使用Class Wizard添加消息處理函數(shù)
用過的VC++6.0的朋友應該對Class Wizard很熟悉了,添加類、消息處理函數(shù)等經(jīng)常會用到它,可以說是一個很核心的功能。但從VS2002開始就見不到Class Wizard了,大部分功能都集成到對話框和控件等的屬性中了,使用很方便。到VS2010,久違的Class Wizard又回來了。
大家應該記得,“計算”按鈕的ID為IDC_ADD_BUTTON,上圖中Commands標簽下,Oject IDs列表中有此ID,因為我們是想實現(xiàn)點擊按鈕后的消息處理函數(shù),所以在Messages列表中選擇BN_CLICKED消息,然后點右上方的Add Handler就可以添加BN_CLICKED消息處理函數(shù)OnClickedAddButton了。當然你也可以改名,但一般用的默認的就可以。
2.通過“Add Event Handler...”添加消息處理函數(shù)
在“計算”按鈕上點右鍵,然后在右鍵菜單中選擇菜單項“Add Event Handler...”,彈出“Event Handler Wizard”對話框,如下圖:
可見“Message type”中默認選中的就是BN_CLICKED消息,函數(shù)名和所在類都已經(jīng)自動給出,直接點“Add and Edit”就可以了。
3.在按鈕的屬性視圖中添加消息處理函數(shù)
上面說過,從VS2002開始就主要從屬性視圖添加消息處理函數(shù)了。我們在“計算”按鈕上點右鍵,在右鍵菜單中選擇“Properties”,右側(cè)面板中會顯示按鈕的屬性視圖。
我們可以像上圖中那樣,點屬性視圖的“Control Events”按鈕(類似閃電標志),下面列出了“計算”按鈕的所有消息。我們要處理的是BN_CLICKED消息,點其右側(cè)空白列表項,會出現(xiàn)一個帶下箭頭的按鈕,再點此按鈕會出現(xiàn)“<Add> OnBnClickedAddButton”選項,最后選中這個選項就會自動添加BN_CLICKED處理函數(shù)了。
4.雙擊按鈕添加消息處理函數(shù)
最直接最簡單的方法就是,雙擊“計算”按鈕,MFC會自動為其在CAdditionDlg類中添加BN_CLICKED消息的處理函數(shù)OnBnClickedAddButton()。
二.在消息處理函數(shù)中添加自定義功能
在我們使用任意一種方法添加了消息處理函數(shù)以后,都只能得到一個空的OnBnClickedAddButton()函數(shù)的函數(shù)體,要實現(xiàn)我們想要的功能,還需要在函數(shù)體中加入自定義功能代碼。
在加法計算器程序中,我們想要“計算”按鈕實現(xiàn)的功能是,獲取被加數(shù)和加數(shù)的數(shù)值,然后計算它們的和并顯示到和的編輯框里。那么,OnBnClickedAddButton()的函數(shù)體就應修改為:
C++代碼
void CAdditionDlg::OnBnClickedAddButton() { // TODO: Add your control notification handler code here // 將各控件中的數(shù)據(jù)保存到相應的變量 UpdateData(TRUE); // 將被加數(shù)和加數(shù)的加和賦值給m_editSum m_editSum = m_editSummand + m_editAddend; // 根據(jù)各變量的值更新相應的控件。和的編輯框會顯示m_editSum的值 UpdateData(FALSE); }
在上面的代碼中已經(jīng)添加注釋,大家應該很容易理解了。對于UpdateData()函數(shù)的說明在上一講中已經(jīng)介紹過,如果忘了可以再回上一講了解了解。
接下來我們運行下此應用程序。在運行結(jié)果界面中,輸入被加數(shù)5.1,加數(shù)2.3,然后點“計算”:
在上圖中可以看到,點“計算”按鈕后,和的編輯框中顯示了正確結(jié)果:7.4。
簡單分析下運行過程:輸入被加數(shù)和加數(shù),點“計算”按鈕后產(chǎn)生點擊消息,從而調(diào)用OnBnClickedAddButton()函數(shù)。進入此函數(shù)后,首先由UpdateData(TRUE)函數(shù)將被加數(shù)的值5.1和加數(shù)的值2.3分別保存到變量m_editSummand和m_editAddend,然后通過語句m_editSum = m_editSummand + m_editAddend;計算出被加數(shù)和加數(shù)的和為7.4,并把7.4賦值給m_editSum。最后調(diào)用UpdateData(FALSE)根據(jù)被加數(shù)、加數(shù)、和的值更新三個編輯框的顯示值,就得到了上圖中的結(jié)果。
到此,一個具有簡單的加法運算功能的加法計算器應用程序就基本完成了。如果大家想實現(xiàn)其他功能,可以修改控件資源和消息處理函數(shù)來練習下。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務必注明出處、不得修改原文相關鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn