程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 按鈕控件的使用

按鈕控件的使用

編輯:vc教程

  最近有不少朋友發信到我的郵箱,其中有高手也有菜鳥,也許他們問的問題我還不能一一解答,但是他們的來信的確讓我感受到極大的鼓舞。今天忙裡偷閒,翻譯了一片外國的文章,獻給那些摸索中的菜鳥們。

  下面將通過一個最簡單的程序來說明Windows的消息機制。程序主要是使用兩個按鈕控件,它要求用戶輸入兩個數字,當你按下其中一個按鈕的時候,會根據進行相應的計算並輸出結果。例如如果你輸入1和2,然後按下''Plus'' 按鈕,就會輸出結果。

  由於大多數情況下,按鈕控件都是在對話框中使用的,所以我們的程序也就從對話框開始。使用程序向導建立一個名為“ButtonDemo”的項目,選擇基於對話框的程序類型。

  選擇Workspace中的ResourceVew 屬性頁,在裡面找到名為IDD_BUTTONDEMO_DLG的一項,雙擊打開對話框編輯窗口。可以看到系統已經替我們在窗口中加入了''Ok''和''Cancel''兩個按鈕,我們保留OK按鈕,刪掉Cancel按鈕,並按照圖中所示改變按鈕的放置位置。

  通過鼠標的拖放操作往窗體中加入兩個按鈕(因為在本程序中需要''Plus'' and ''Minus''兩個按鈕),在按鈕上面右擊鼠標,選擇properties進入控件的屬性設置。MFC會為每一個新加入到窗口中的按鈕分配一個唯一的ID值,相應的ID值會記錄在一個名為"Resource.h"文件中。為了表達清楚各個控件的功能,我們將按鈕的ID值改為ID_BUTTON_ADD,並修改caption的內容為“Plus”。

  下一步我們要加入Edit Box控件以便在程序中輸入和輸出數據。加入Edit Box控件的方法跟加入Button控件的方法是一樣的,就是先把控件拉進來,調整它在窗口中的位置,然後修改它們的ID值。如下圖所示,不過記得在最後一個Edit Box控件的屬性設置中要把 ''disable''的屬性也勾上,因為計算的結果不需要由用戶輸入。我們還在右邊的兩個Edit Box之間加入一個Static 控件用來顯示等式中的等號,只需要把控件拖進來改變它的caption就可以了。

  調整好各個控件的位置之後,我們要把控件與程序代碼聯系起來。這一步可以通過類向導(class wizard)來實現,調用類向導的方法有兩種,一種是通過菜單項 View->Class Wizard調用,又或者通過快捷鍵Control + W 。選擇Member Variables 屬性頁,加入以下三個變量: m_nX, m_nY和m_nAnswer。記住三個變量的類型都是整數int類型,它們用來存放Edit Box中的整數值。

  然後再選擇Message Maps 屬性頁,為ID值為ID ID_BUTTON_ADD和 ID_BUTTON_SUBTRACT 的兩個按鈕控件添加BN_CLICK消息,系統會針對添加的消息在代碼中加入相應的消息函數,這樣當用戶點擊按鈕的時候就會調用這個函數。在本例中生成的兩個消息函數分別名為 OnButtonAdd 和 OnButtonSubtract.。完成了上面的工作之後,記住最後要按OK按鈕退出類向導。

  現在我們可以著手代碼的編寫了。代碼的意思相信不難理解,但是關於UpdateData函數卻有必要在這裡講解一下。在這裡UpdateData函數起到控制Edit Box 顯示內容的作用。當調用UpdataData (TRUE)的時候,程序會對控件對應的變量值進行刷新,也就是說會把控件中的輸入值賦給對應的變量。而調用UpdataData (FALSE)的時候,程序則會把相應變量的值顯示在對應的控件上面。

  

void CButtonDemoDlg::OnButtonAdd()
{
  UpdateData (TRUE);
  m_nAnswer = m_nX + m_nY;
  UpdateData (FALSE);
}
void CButtonDemoDlg::OnButtonSubtract()
{
  UpdateData (TRUE);
  m_nAnswer = m_nX - m_nY;
  UpdateData (FALSE);
}

  按鈕的使用就是如此簡單。

  既然上面講到添加消息函數,這裡就順便加插些內容。在默認的情況下,通過類向導只能添加一些常用的消息函數。也就是說在類向導的消息列表中並沒有列舉出所有的消息。此時可以通過下面的方法往列表中加入這些沒有顯示的消息。選擇“Workspace”中的“ClassViewq”頁,在對應的類中右擊,選擇Add Windows Message Handler…,這時你就會看到其它一些原來列表中沒有的Windows消息了,你可以選擇其一或者全部加入到消息列表中,這樣就可以使用類向導來添加相應的消息函數了。如果在以後的練習中遇到類向導中沒有的Windows消息,記住這個方法哦。

  (全文完)

本文示例代碼或素材下載

  1. 上一頁:
  2. 下一頁:
欄目導航
Copyright © 程式師世界 All Rights Reserved