1. 程式人生 > >MFC控制元件關聯變數

MFC控制元件關聯變數

控制元件關聯變數的方法:

在控制元件上右鍵-->新增變數->將類別改成Value(預設是Control) ->選擇變數型別->取一個變數名->根據型別會提示相關項可輸入

如下圖

點選完成(注意這裡的訪問, 變數型別和變數名之所以是灰色的, 是因為我這是第二次開啟)

將會在三處生成程式碼

1. 標頭檔案 訪問所選位置(這裡是public) int iNumber;

2. 類初始化此變數

3.DoDataExchange 出生成相關程式碼

   DDX_Text(pDX, IDC_EDIT4, iNumber);
   DDV_MinMaxInt(pDX, iNumber, 0, 50);

現在我們在改變變數的時候可以這樣做, 以便它和控制元件實時關聯

UpdateData(TURE);

iNumber = 10;

UpdateData(FALSE);

===================

以上是以CEdit為例, 其它控制元件方法大同小異

在MFC中我們常常要把一些變數於控制元件對應起來! 
1. 控制元件與value變數對應。

通過UpdateDate來實呼叫DoDataExchange(CDataExchange* pDX)實現變數資訊交換!
如:
DDX_Text(pDX, IDC_STATICCOUNT, m_sCount); --> value
把控制元件ID為IDC_STATICCOUNT的控制元件與m_sCount變數對應起,
用UpdateDate(TRUE)來把IDC_STATICCOUNT控制元件資料寫到m_sCount; 
用UpdateDate(FALSE)把m_sCount資料讀寫到IDC_STATICCOUNT控制元件; 

2. 控制元件與控制變數對應。
DDX_Control

(pDX, IDC_BSTARTTIME, m_cStartTime);-->control
把控制元件ID為IDC_BSTARTTIME的控制元件與m_sCount變數對應起,如BUTTON。
此時我們可以通過m_cStartTime控制元件變數改變對應控制元件狀態!
m_cStartTime.EnableWindow(FALSE); 可以改變控制元件是否可用!如果沒有control對應,
那麼我們可以使用等價語句:GetDlgItem(IDC_BSTARTTIME)->EnableWindow(TRUE);