VC++60 第二章 按鈕、編輯框和複選框

第二章按鈕、編輯框和複選框

 

本章將通過一個實例程序介紹按鈕、編輯框和複選框這三個控件的設計和使用技巧。控件設計的一般過程是用可視化操作在對話框中加入控件,設置屬性,編譯連接並觀看效果、爲控件定義變量和編寫代碼。如果使用控件較多,可以事先編一個控件屬性表,參考表中信息設計,這樣可以提高工作效率,減少設計錯誤和幫助糾錯。下面我們先設計和運行例程,然後總結一般方法。

 

本章要點

編輯框的設計和使用
用按鈕和複選框來控制
調用外部的可執行程序

 

2.1 例程Test.exe的界面和功能

Test.exe的界面如圖Chap2-01所示。

VC++60 <wbr>第二章 <wbr>按鈕、編輯框和複選框

圖chap02-1

本例程的功能如下:上方的靜態文本框用於顯示信息。下面的編輯框用於輸入字符串,兩個複選框用來控制編輯框的狀態,左邊的“不選”就會隱藏,左邊的“不選”就會就使它不激活,不能輸入了。按下[測試]按鈕會在編輯框中顯示一段預先設置的文字,按下[清除]按鈕則清除編輯框中的文字。當編輯框內按上面的提示輸入字符串後,就會執行相應的程序(其它字符串則無反應)。

 

2.2 創建工程和設計界面

 

一 創建工程
位置 =D:\VC60\CH02\;程序名=Test
Step1 應答:對話框模式
Step2 應答:默認
Step3 應答:MFC標準和靜態庫連接
Step4 應答:默認

 

二 設計界面
按下列的屬性表設計

控件 標題 ID 屬性 擴展
靜態文本 (見圖
ch02-1)
IDC-STATIC    
編輯框   IDC_TEST_EDIT    
複選框 顯示編輯框 IDC_VISIBLE_CHECK    
複選框 編輯框可輸入 IDC_ENABLED_CHECK    
按鈕 測試 IDC_TEST_BUTTON 可顯示,TAB Client,Static,Modal(√)
按鈕 清除 IDC_CLEAR_BUTTON 可顯示,TAB Client,Static,Modal(√)
按鈕 EXIT IDC_EXIT_BUTTON 可顯示,TAB Client,Static,Modal(√)
組框 Test IDC_TEST_GROUP    
對話框 Test程序 IDC_TEST_DIALOG    

 

設計好的界面如圖chap02-2:

VC++60 <wbr>第二章 <wbr>按鈕、編輯框和複選框

圖chap02-2

 

三 添加變量和事件

下一步是設置變量和添加事件,編輯框中輸入的內容程序中要使用,所以需要設置字符串型變量,輸入後將調用函數去執行外部程序,因此需要添加EN_CHANGE。打開“類嚮導”的“的添加變量頁”,選擇編輯框的ID,點擊"Add...",輸入變量名=m_Test_Edit ,類型=String。再回到“消息映射”頁,選中編輯框的ID,選擇事件EN_CHANGE,點擊"Add Function",就生成了OnChangeTestEdit()函數,點擊"Edit code"就可以立即輸入代碼。

現在我們不輸入代碼,先設置其他的變量和事件。按下表設置兩個複選框的變量,用Bool型來表示複選框是否被選中。如是“是”,BN_CLICKED事件的代碼是“設置編輯框的顯示屬性爲是”,否則編輯框不可顯示。同樣地,添加IDC_ENABLED_CHECK的變量和事件,代碼的功能是“當m_Enavbled_Check == TRUE 時設置編輯框的激活屬性”。

要添加的變量和事件函數表

控件 標題 ID 添加變量 添加事件
編輯框   IDC_TEST_EDIT String m_Test_Edit EN_CHANGE
複選框 顯示編輯框 IDC_VISIBLE_CHECK Bool m_Visible_Check BN_CLICKED
複選框 編輯框可輸入 IDC_ENABLED_CHECK Bool m_Enavbled_Check BN_CLICKED

 

2.3 編寫代碼

1 初始化對話框
在OnInitDialog()函數中置兩個複選框變量的值爲真TRUE。代碼如下:
    m_Visible_Check = TRUE;
    m_Enavbled_Check= TRUE;
    UpdateData(FALSE);
使對話框不能更新。

2 兩複選框的“點擊”事件
點擊“顯示編輯框”將改變m_Visible_Check的真假之值,根據這個值設置編輯框爲可見活不可見,代碼如下:
void CTestDlg::OnVisibleCheck()
{
    // TODO: Add your control notification handler code here
    UpdateData(TRUE);
    if(m_Visible_Check == TRUE)
        GetDlgItem(IDC_TEST_EDIT)->ShowWindow(SW_SHOW);
    else
        GetDlgItem(IDC_TEST_EDIT)->ShowWindow(SW_HIDE);
}

“顯示編輯框”複選框的代碼如下:
void CTestDlg::OnEnabledCheck()
{
    // TODO: Add your control notification handler code here
    UpdateData(TRUE);
    if(m_Enabled_Check == TRUE)
        GetDlgItem(IDC_TEST_EDIT)->EnableWindow(TRUE);
    else
        GetDlgItem(IDC_TEST_EDIT)->EnableWindow(FALSE);
   
}

操作時函數體是自動生成的,你只要輸入TODO後面的代碼。
代碼的含義:
函數GetDlgItem(ID)的功能是返回ID所對應的控件對象,->ShowWindow(常量)則顯示或隱藏該控件,常量SW_SHOW和SW_HIDE必須大寫。所以
        GetDlgItem(IDC_TEST_EDIT)->ShowWindow(SW_HIDE);
表示“隱藏編輯框”。
函數EnableWindow(TRUE)的功能是“激活編輯框”。

3 編輯框添加EN_CHANGE事件及其代碼
因爲編輯框在輸入某些字符串後,就會執行相應的程序。爲實現這一功能,需要添加EN_CHANGE事件。在類嚮導的消息映射頁上,選定該編輯框的ID,在右邊的列表框中選EN_CHANGE事件。按添加函數後生成OnChangeTestEdit();點擊"Add code"立即輸入代碼。

VC++60 <wbr>第二章 <wbr>按鈕、編輯框和複選框

圖chap02-3 

執行外部程序可用函數system(程序名),所以根據編輯框變量m_TestEdit的值選擇要執行的程序。代碼如下:

    UpdateData(TRUE);       //允許更新,變量的值會改變
    CString UpperValue;
    UpperValue = m_Test_Edit;
    UpperValue.MakeUpper(); //大寫化

    if(UpperValue == "MSPAINT")
    {   
        system("Mspaint.exe"); //執行畫圖程序
        m_TestEdit = "";
        UpdateData(FALSE);
    }
    if(UpperValue == "CALC")
    {   
        system("calc.exe");     //計算器程序
        m_TestEdit = "";
        UpdateData(FALSE);
    }
    if(UpperValue == "NOTEPAD")
    {   
        system("Notepad.exe");  //記事本程序
        m_Test_Edit = "";
        UpdateData(FALSE);
    }

4 添加三個按鈕的代碼
前兩個按鈕的功能是重新設置編輯框變量的值,其代碼是:

測試:
    m_Test_Edit = "測試!在文本框中顯示信息";
    UpdateData(FALSE);
清除:
    m_Test_Edit = "";
    UpdateData(FALSE);
EXIT:
    OnOK();

至此,控件和代碼都設計完畢,“保存全部”後再“重建全部”,就生成可執行文件好運行了。

 

2.4 小結

本章學習了按鈕、編輯框和複選框三類控件。設置控件屬性用右鍵點擊控件。
在按鈕的設置中,屬性頁1設置ID和標題,另外“顯示”和“TAB”兩個選項按默認被選中。屬性頁2-Styles無須設置,屬性頁3-Extended styles設置按鈕的外觀,對EXIT按鈕選中Client,Static,Modal這三項,其他兩個默認全不選。

VC++60 <wbr>第二章 <wbr>按鈕、編輯框和複選框
VC++60 <wbr>第二章 <wbr>按鈕、編輯框和複選框
VC++60 <wbr>第二章 <wbr>按鈕、編輯框和複選框

編輯框沒有標題,在一般頁上設置ID和是否顯示是否激活,在Styles頁上選擇是單行還是多行文本。Extended styles頁和按鈕的一樣設置外觀。

VC++60 <wbr>第二章 <wbr>按鈕、編輯框和複選框
VC++60 <wbr>第二章 <wbr>按鈕、編輯框和複選框

複選框除了ID和標題外沒有要設置的。

在本章中,我們還學到如何用按鈕和複選框來控制編輯框的方法,利用GetDlgItem(ID)函數得到控件對象的方法,還有用 system("*.exe")執行外部程序的方法。

——END——

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