1. 程式人生 > >VS2013/MFC程式設計入門之七(對話方塊:建立對話方塊類和新增控制元件變數)

VS2013/MFC程式設計入門之七(對話方塊:建立對話方塊類和新增控制元件變數)

前兩講中為大家講解了如何建立對話方塊資源。建立好對話方塊資源後要做的就是生成對話方塊類了。再宣告下,生成對話方塊類主要包括新建對話方塊類、新增控制元件變數和控制元件的訊息處理函式等。

       因為給大家的例程Addition是基於對話方塊的程式,所以程式自動建立了對話方塊模板IDD_ADDITION_DIALOG,並自動生成了對話方塊類CAdditionDlg,它是從CDialogEx類派生的。大家用過VC++ 6.0的可能記得,我們定義的對話方塊類都是從CDialog類派生的,但在VS2013中,一般對話方塊類都是繼承自CDialogEx類。

       建立對話方塊類

       如果是自己新新增的對話方塊模板,怎樣為它建立對話方塊類呢?

       1.首先就按第六講:建立對話方塊模板和修改對話方塊屬性中說的那樣,在資源檢視的“Dialog”節點上右鍵,然後在右鍵選單中選擇“插入Dialog”建立一個新的對話方塊模板,ID就使用預設的IDD_DIALOG1。

       2.在中間區域會顯示新建的對話方塊模板,然後選中此對話方塊模板,點右鍵,在右鍵選單中選擇新增類。

 

       3.選擇“新增類”後會彈出一個對話方塊,在對話方塊中“類名”下的編輯框中寫入自定義的類名就可以了,例如CMyDialog。

       4.最後點“Finish”完成。

       最終你就可以在Class View中看到新生成的對話方塊類CMyDialog了,並且在解決方案資源管理器中中有相應的MyDialog.h標頭檔案和MyDialog.cpp原始檔生成。CMyDialog類同樣派生於CDialogEx類。

       注意,一般類名都以C打頭,又比如,CTestDlg。

       為對話方塊中的控制元件新增變數

       在上一講中為對話方塊添加了幾個控制元件,包括三個靜態文字框,三個編輯框,一個按鈕控制元件。程式自動生成的Cancel按鈕保留,作為退出按鈕,而OK按鈕刪除掉了。

       靜態文字框只是為了說明後面緊跟的編輯框中資料的意義,是被加數、加數還是和,所以它們是不會變的,我們就不為它們新增變量了。按鈕控制元件是用來操作的,這裡也不為它們新增變數。編輯框中的資料可能會經常變化,有必要為它們每個控制元件關聯一個變數。

       首先為被加數的編輯框IDC_SUMMAND_EDIT新增變數。

       1.在編輯框上點右鍵,在右鍵選單中選擇“新增變數”。彈出新增成員變數的嚮導對話方塊。

       2.我們想為其新增值變數而不是控制元件變數,所以對話方塊中“類別”下的組合框中選擇Value。

       3.“變數型別”下的組合框此時預設選中的是“CString”,CString是字串類,顯然不能進行加法運算。我們可以選擇double、float、int等。這裡我們選擇double,即編輯框關聯一個double型別的變數。

       4.在“變數名”中寫入自定義的變數名。本文為其取名m_editSummand。


       5.點“Finish”完成。

       注意,類的成員變數名一般以m_打頭,以標識它是一個成員變數。

       參照此方法,再分別為加數的編輯框IDD_ADDEND_EDIT新增double型變數m_editAddend、和的編輯框IDD_SUM_EDIT新增double型變數m_editSum。

       對話方塊類的資料交換和檢驗

       在程式執行介面中,使用者往往會改變控制元件的屬性,例如,在編輯框中輸入字串,或者改變組合框的選中項,又或者改變複選框的選中狀態等。控制元件的屬性改變後MFC會相應修改控制元件關聯變數的值。這種同步的改變是通過MFC為對話方塊類自動生成的成員函式DoDataExchange()來實現的,這也叫做對話方塊的資料交換和檢驗機制。

       我們為三個編輯框添加了變數以後,在AdditionDlg.cpp中CAdditionDlg的DoDataExchange()函式的函式體中多了三條DDX_Text呼叫語句。下面是函式體程式碼和新增的註釋。

C++程式碼
  1. void CAdditionDlg::DoDataExchange(CDataExchange* pDX)   
  2. {   
  3. // 處理MFC預設的資料交換 
  4.     CDialogEx::DoDataExchange(pDX);   
  5. // 處理控制元件IDC_SUMMAND_EDIT和變數m_editSummand之間的資料交換 
  6.     DDX_Text(pDX, IDC_SUMMAND_EDIT, m_editSummand);   
  7. // 處理控制元件IDC_ADDEND_EDIT和變數m_editAddend之間的資料交換 
  8.     DDX_Text(pDX, IDC_ADDEND_EDIT, m_editAddend);   
  9. // 處理控制元件IDC_SUM_EDIT和變數m_editSum之間的資料交換 
  10.     DDX_Text(pDX, IDC_SUM_EDIT, m_editSum);   
  11. }  

       再以Addition程式為例簡單說下資料交換機制。如果我們在程式執行介面中輸入被加數,則通過CAddition的DoDataExchange()函式可以將輸入的值儲存到m_editSummand變數中,反之如果程式執行中修改了變數m_editSummand的值,則通過CAddition的DoDataExchange()函式也可以將新的變數值顯示到被加數的編輯框中。

       但是這種資料交換機制中,DoDataExchange()並不是被自動呼叫的,而是需要我們在程式中呼叫CDialogEx::UpdateData()函式,由UpdateData()函式再去自動呼叫DoDataExchange()的。

       CDialogEx::UpdateData()函式的原型為:

       BOOL UpdateData(BOOL bSaveAndValidate = TRUE);

       引數:bSaveAndValidate用於指示資料傳輸的方向,TRUE表示從控制元件傳給變數,FALSE表示從變數傳給控制元件。預設值是TRUE,即從控制元件傳給變數。

       返回值:CDialogEx::UpdateData()函式的返回值表示操作是否成功,成功則返回TRUE,否則返回FALSE。

       在下一講中將具體演示CDialogEx::UpdateData()函式如何使用。

       本節主要講的是新建對話方塊類和新增控制元件變數,控制元件的訊息處理函式將在下一講詳細介紹。依然歡迎大家常回部落格學習和討論。

相關推薦

VS2013/MFC程式設計入門對話方塊建立對話方塊新增控制元件變數

前兩講中為大家講解了如何建立對話方塊資源。建立好對話方塊資源後要做的就是生成對話方塊類了。再宣告下,生成對話方塊類主要包括新建對話方塊類、新增控制元件變數和控制元件的訊息處理函式等。        因為給大家的例程Addition是基於對話方塊的程式,所以程式自動建立了

VS2013/MFC程式設計入門對話方塊對話方塊新增控制元件

建立對話方塊資源需要建立對話方塊模板、修改對話方塊屬性、為對話方塊新增各種控制元件等步驟,前面一講中已經講了建立對話方塊模板和修改對話方塊屬性,本節繼續講如何為對話方塊新增控制元件。        上一講中建立了一個名為“Addition”的工程,目的是生成一個實現加法

VS2013/MFC程式設計入門MFC應用程式框架分析

  上一講講的是VS2013應用程式工程中檔案的組成結構。這一節就為大家分析下MFC應用程式框架的執行流程。        一.SDK應用程式與MFC應用程式執行過程的對比        程式執行都要有入口函式,在之前的C++教程中都是main函式,而Windows應

VS2013/MFC程式設計入門十六對話方塊檔案對話方塊

上一講介紹的是訊息對話方塊,本節講解檔案對話方塊。        檔案對話方塊的分類 檔案對話方塊分為開啟檔案對話方塊和儲存檔案對話方塊,相信大家在Windows系統中經常見到這兩種檔案對話方塊。例如,很多編輯軟體像記事本等都有“開啟”選項,選擇“開啟”後會彈出一個對

VS2013/MFC程式設計入門二十常用控制元件列表檢視控制元件List Control 上

      本節為大家詳解列表檢視控制元件List Control的使用。      列表檢視控制元件簡介        列表檢視控制元件List Control同樣比較常見,它能夠把任何字串內容以列表的方式顯示出來,這種顯示方式的特點是整潔、直觀,在實際應用中能為使

VS2013/MFC程式設計入門十二對話方塊屬性頁對話方塊及相關的介紹

本節開始講一種特殊的對話方塊--屬性頁對話方塊。        屬性頁對話方塊的分類        屬性頁對話方塊想必大家並不陌生,XP系統中桌面右鍵點屬性,彈出的就是屬性頁對話方塊,它通過標籤切換各個頁面。另外,我們在建立MFC工程時使用的嚮導對話方塊也屬於屬性頁對

VS2013/MFC程式設計入門十五對話方塊訊息對話方塊

       本節講解Windows系統中最常用最簡單的一類對話方塊--訊息對話方塊。        我們在使用Windows系統的過程中經常會見到訊息對話方塊,提示我們有異常發生或提出詢問等。因為在軟體開發中經常用到訊息對話方塊,所以MFC提供了兩個函式可以直接生成指

VS2013/MFC程式設計入門十一對話方塊非模態對話方塊建立及顯示

 上一節講了模態對話方塊及其彈出過程,本節接著講另一種對話方塊--非模態對話方塊的建立及顯示。        前面已經說過,非模態對話方塊顯示後,程式其他視窗仍能正常執行,可以響應使用者輸入,還可以相互切換。本文中將上一講中建立的Tip模態對話方塊改為非模態對話方塊,讓

VS2013/MFC程式設計入門二十六常用控制元件圖片控制元件Picture Control

本節主要講一種簡單實用的控制元件,圖片控制元件Picture Control。通過使用圖片控制元件我們可以在介面某個位置顯示圖片以美化介面。        圖片控制元件簡介        圖片控制元件和前面講到的靜態文字框都是靜態文字控制元件,因此兩者的使用方法有很多

VS2013/MFC程式設計入門三十二選單VS2013選單資源詳解

前面我們已經講完了所有的常用控制元件,本節開始為大家講解選單的概念及使用。        選單簡介        選單可以分為下拉式選單和彈出式選單。        下拉式選單一般在視窗標題欄下面顯示,大家還記得我們在VS2013/MFC程式設計入門之一(利用MFC

VS2013/MFC程式設計入門十九常用控制元件靜態文字框

       從本節開始講解各種常用控制元件的用法。MFC中常用控制元件主要包括:靜態文字框、編輯框、單選按鈕、複選框、分組框、列表框、組合框、圖片控制元件、列表控制元件、樹形控制元件和進度條控制元件等等。本節先來講解靜態文字框的使用。        控制元件的通知訊息

VS2013/MFC程式設計入門三十一常用控制元件標籤控制元件Tab Control

前面兩節講了樹形控制元件Tree Control,本節開始講解標籤控制元件Tab Control,也可以稱為選項卡控制元件。        標籤控制元件簡介        標籤控制元件也比較常見。它可以把多個頁面整合到一個視窗中,每個頁面對應一個標籤,使用者點選某個標

VS2013/MFC程式設計入門二十三常用控制元件列表框控制元件ListBox

前面兩節講了比較常用的按鈕控制元件,並通過按鈕控制元件例項說明了具體用法。本文要講的是列表框控制元件(ListBox)及其使用例項。        列表框控制元件簡介        列表框給出了一個選項清單,允許使用者從中進行單項或多項選擇,被選中的項會高亮顯示。列表

VS2013/MFC程式設計入門二十四常用控制元件組合框控制元件Combo Box

 上一節講了列表框控制元件ListBox的使用,本節主要講解組合框控制元件Combo Box。組合框同樣相當常見,例如,在Windows系統的控制面板上設定語言或位置時,有很多選項,用來進行選擇的控制元件就是組合框控制元件。        組合框控制元件簡介     

VS2010/MFC程式設計入門四十三MFC常用CTimeCTimeSpan

轉載:   http://www.jizhuomi.com/software/230.html 上一節中雞啄米講了MFC常用類CString類的用法,本節繼續講另外兩個MFC常用類-日期和時間類CTime類和CTimeSpan類。    

VS2010/MFC程式設計入門前言

     VC++簡介       VC++全稱是Visual C++,是由微軟提供的C++開發工具,它與C++的根本區別就在於,C++是語言,而VC++是用C++語言編寫程式的工具平臺。VC++不僅是一個編譯器更是一個整合開發環境,包括編輯器、偵錯程式和編譯器等,一般它包含

C語言/C++程式設計 時鐘分針追趕時針,分針與時針相遇次數問題

題目描述 有一個標準的12小時時鐘,它有一個時針,一個分針。現問你,在給定的兩個時刻之間分針與時針相遇幾次? 輸入 輸入包含多組測試資料。每組輸入包含4個整數,前兩個數字分別表示起始時刻的小時和分,後兩個數字分別表示結束時刻的小時和分。 小時數在[1,12]

Winform/C#入門程式設計第二部分常用控制元件數字顯示框控制元件NumericUpDown

簡介:         介紹數字顯示框控制元件NumericUpDown。一般用在跟數字有關的顯示中。當是純數字時,可以優先使用此控制元件,而不是編輯框控制元件TextBox。   介紹: 1.屬性 常用屬性

VS2013/MFC程式設計:對話方塊控制元件新增訊息處理函式

 建立對話方塊類和新增控制元件變數在上一講中已經講過,這一講的主要內容是如何為控制元件新增訊息處理函式。        MFC為對話方塊和控制元件等定義了諸多訊息,我們對它們操作時會觸發訊息,這些訊息最終由訊息處理函式處理。比如我們點選按鈕時就會產生BN_CLICKED訊息,修改編輯框內容時會產生EN

【opencv入門】形態學圖像處理膨脹、腐蝕

tar struct show 函數 使用 運算 腐蝕和膨脹 依賴 版本 參考網站: http://blog.csdn.net/poem_qianmo/article/details/23710721 1、形態學(morphology)概述   數學形態學(Mathem