VS2010-MFC(對話方塊:為控制項添加訊息處理函數)

來源:互聯網
上載者:User

標籤:color   event   通過   font   儲存   size   blank   進入   str   

 

轉自:http://www.jizhuomi.com/software/156.html

 

 MFC為對話方塊和控制項等定義了諸多訊息,我們對它們操作時會觸發訊息,這些訊息最終由訊息處理函數處理。比如我們點擊按鈕時就會產生BN_CLICKED訊息,修改編輯框內容時會產生EN_CHANGE訊息等。一般為了讓某種操作達到效果,我們只需要實現某個訊息的訊息處理函數。

 

       一.添加訊息處理函數

       仍以前面的加法計算機的程式為例,說明怎樣為“計算”按鈕控制項添加訊息處理函數。

 

       添加方法列出4種:

       1.使用Class Wizard添加訊息處理函數

       用過的VC++ 6.0的朋友應該對Class Wizard很熟悉了,添加類、訊息處理函數等經常會用到它,可以說是一個很核心的功能。但從VS2002開始就見不到Class Wizard(類嚮導)了,大部分功能都整合到對話方塊和控制項等的屬性中了,使用很方便。到VS2010,久違的Class Wizard又回來了。但原作者已經習慣了使用屬性中的功能了,對於從VC++ 6.0直接轉VS2010的朋友可能覺得還是使用Class Wizard比較習慣。

       

 

       大家應該記得,“計算”按鈕的ID為IDC_ADD_BUTTON,中Commands標籤下,Oject IDs列表中有此ID,因為我們是想實現點擊按鈕後的訊息處理函數,所以在Messages列表中選擇BN_CLICKED訊息,然後點右上方的Add Handler就可以添加BN_CLICKED訊息處理函數OnClickedAddButton了。當然你也可以改名,但一般用的預設的就可以。

       

 

 

       2.通過“Add Event Handler...”添加訊息處理函數

       在“計算”按鈕上點右鍵,然後在右鍵菜單中選擇功能表項目“Add Event Handler...”,彈出“Event Handler Wizard”對話方塊,如:

        

       

       可見“Message type”中預設選中的就是BN_CLICKED訊息,函數名和所在類都已經自動給出,直接點“Add and Edit”就可以了。

 

       3.在按鈕的屬性視圖中添加訊息處理函數

       上面說過,從VS2002開始就主要從屬性視圖添加訊息處理函數了。我們在“計算”按鈕上點右鍵,在右鍵菜單中選擇“Properties”,右側面板中會顯示按鈕的屬性視圖。

                 

       我們可以像中那樣,點屬性視圖的“Control Events”按鈕(類似閃電標誌),下面列出了“計算”按鈕的所有訊息。我們要處理的是BN_CLICKED訊息,點其右側空白清單項目,會出現一個帶下箭頭的按鈕,再點此按鈕會出現“<Add> OnBnClickedAddButton”選項,最後選中這個選項就會自動添加BN_CLICKED處理函數了。

 

       4.雙擊按鈕添加訊息處理函數

       最直接最簡單的方法就是,雙擊“計算”按鈕,MFC會自動為其在CAdditionDlg類中添加BN_CLICKED訊息的處理函數OnBnClickedAddButton()。

 

       二.在訊息處理函數中添加自訂功能

       在我們使用任意一種方法添加了訊息處理函數以後,都只能得到一個空的OnBnClickedAddButton()函數的函數體,要實現我們想要的功能,還需要在函數體中加入自訂功能代碼。

       在加法計算機程式中,我們想要“計算”按鈕實現的功能是,擷取被加數和加數的數值,然後計算它們的和並顯示到和的編輯框裡。那麼,OnBnClickedAddButton()的函數體就應修改為:

C++代碼:       
void CAdditionDlg::OnBnClickedAddButton()   {       // TODO: Add your control notification handler code here       // 將各控制項中的資料儲存到相應的變數       UpdateData(TRUE);         // 將被加數和加數的加和賦值給m_editSum       m_editSum = m_editSummand + m_editAddend;         // 根據各變數的值更新相應的控制項。和的編輯框會顯示m_editSum的值       UpdateData(FALSE);   }  

 

 

       上面的代碼已經添加了注釋,大家應該很容易理解了。對於UpdateData()函數的說明在上一講中已經介紹過,如果忘了可以再回上一講瞭解瞭解。

 

       接下來我們運行下此應用程式。在運行結果介面中,輸入被加數5.1,加數2.3,然後點“計算”:

       

       

       在中可以看到,點“計算”按鈕後,和的編輯框中顯示了正確結果:7.4。

 

 

       簡單分析下運行過程:輸入被加數和加數,點“計算”按鈕後產生點擊訊息,從而調用OnBnClickedAddButton()函數。進入此函數後,首先由UpdateData(TRUE)函數將被加數的值5.1和加數的值2.3分別儲存到變數m_editSummand和m_editAddend,然後通過語句m_editSum = m_editSummand + m_editAddend;計算出被加數和加數的和為7.4,並把7.4賦值給m_editSum。最後調用UpdateData(FALSE)根據被加數、加數、和的值更新三個編輯框的顯示值,就得到了中的結果。

 

       到此,一個具有簡單的加法運算功能的加法計算機應用程式就基本完成了。如果大家想實現其他功能,可以修改控制項資源和訊息處理函數來練習下。

 

VS2010-MFC(對話方塊:為控制項添加訊息處理函數)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.