MFC中UpdateData函式的使用解釋

2021-08-19 20:43:23 字數 2952 閱讀 4776

解釋之一

當你使用了classwizard建立了控制項和變數之間的聯絡後:當你修改了變數的值,而希望對話方塊控制項更新顯示,就應該在修改變數後呼叫 updatedata(false);如果你希望知道使用者在對話方塊中到底輸入了什麼,就應該在訪問變數前呼叫updatedata(true)。 

用處:主要控制ddx_data 

把控制項中的值和變數進行交換 

比如你有個編輯框,輸入了一些值,你的程式怎麼得到呢;必須先呼叫這個(當然是在用了ddx的情況) 

反之控制項的成員變數中的值也可以通過該函式自動顯示到控制項裡面,根據傳進來的是true或者false 

當你使用了classwizard建立了控制項和變數之間的聯絡後:當你修改了變數的值,而希望對話方塊控制項更新顯示,就應該在修改變數後呼叫 updatedata(false);如果你希望知道使用者在對話方塊中到底輸入了什麼,就應該在訪問變數前呼叫updatedata(true)。 1、

updatedata(true); 

用窗體上控制項中的內容來更新和控制項相關連的變數的值(只能更新value型別的變數) 

例如:你在你的窗體中有乙個edit控制項,為這個控制項關聯了cstring型別的變數m_strname; 

你在控制項中添入內容之後,必須呼叫updatedata(true);才能把你添入的內容傳給m_strname這個變數

updatedata(false); 

和上面的正好相反,還是以上面的edit為例,當你在程式中改變了m_strname變數的內容的時候,如果你想讓那個edit也顯示更新後的 m_strname,就必須呼叫updatedata(false); 

這樣在你的edit中才能顯示更新完的變數的值! 

2、updatedata(true)是將控制項的狀態傳給其關聯的變數,當然你要為控制項關聯上變數才行。

updatedata(false)是將控制項的關聯變數的值傳給控制項並改變控制項狀態。

updatedata重新整理的是當前對話方塊。

updatedata(true);//用於將螢幕上控制項中的資料交換到變數中。

updatedata(false);//用於將資料在螢幕中對應控制項中顯示出來。

3、edit控制項,與控制項關聯的變數m_edit,當程式執行,你在控制項中輸入數21,要把21傳到 m_edit,updatedata(true).如果把m_edit修改,要傳到控制項updatedata(false);

另外注意一點:

使用updatedata()函式時,當前介面上所有繫結了的變數(即通過mfc classwizard給控制項新增了對應的變數)都會被updatedata(true)更新成對應控制項中的內容;同樣所有繫結了變數的控制項中的內容也會 updatedata(false)更新成對應變數中的內容。

要接受使用者的輸入就true,

要輸入結果給使用者就flase

資料量不多的話,最好用setdlgitemtext()和getdlgitemtext()

重要補充:

getwindowtext()是獲取控制項當前內容(caption或者the text within the control —for the control,具體可以檢視msdn)值,是對單個控制項而言; 

而updatedata()是作用於整個cwnd的ddx資料交換機制之中的,是控制項和資料的雙向通道。

解釋之二

updatedata(true)

——重新整理控制項的值到對應的變數。(外部輸入值交給內部變數)

即:控制項的值—>變數。

updatedata(false)

—— 拷貝變數值到控制項顯示。(變數的最終運算結果值交給外部輸出顯示)

即:變數值—>控制項顯示。

例如,視窗中用 ddx_text(pdx, idc_edit1, m_usercode);

將idc_edit1編輯框控制項與m_usercode變數做了關聯,如果修改m_usercode之後要想對應控制項顯示更改,則需要呼叫updatedata(false);反之在idc_edit1的oneditchanged()中需要加入updatedata(true);

簡單地說,如果updatedata(true) == 將控制項的值賦值給

成員變數,即從視窗編輯框中讀入資料;updatedata(false) == 將成員變數的值賦值給控制項,將資料從視窗顯示。

解釋之三

一、總結updatedata()函式

updatedata(true);//用於將螢幕上控制項中的資料交換到變數中。

updatedata(false);//用於將資料在螢幕中對應控制項中顯示出來。

當你使用了classwizard建立了控制項和變數之間的聯絡後:當你修改了變數的值,而希望對話方塊控制項更新顯示,就應該在修改變數後呼叫updatedata(false);如果你希望知道使用者在對話方塊中到底輸入了什麼,就應該在訪問變數前呼叫updatedata(true)。  

二、關於編輯框的賦值和取值

1、建乙個 控制型的變數,如m_edit1,用cwnd的setwindowtext() 和getwindowtext()來賦值和取值。

m_edit1.setwindowtext("hello");  

或者getdlgitem(idc_edit1)->setwindowtext(str);

2、建立乙個控制型的變數,如m_edit1,用setdlgitemtext()和getdlgitemtext()來賦值和取值

cstring str="hello":

m_edit1.setdlgitemtext(idc_edit1,str);

2、直接建乙個   數值形的變數   如m_stredit;   用  updatedata()來控制得到變數,還是更新變數。

//取值   

updatedata(true);   

cstring   buf   =   m_edit1;   

//賦值   

m_edit1="ok!";   

updatedata(false);

mfc中的UpdateData 作用

在vc裡,可以為對話方塊上的控制項設定對應的變數,如文字框可以設定對應的cstring變數,但是在程式中修改文字框的內容時,對應的cstring變數不會隨著改變,需要呼叫updatedata true 來改變變數。類似的,程式中改變了cstring變數,也需要呼叫updatedata false 也...

MFC中的UpdateData 函式

當你使用了classwizard建立了控制項和變數之間的聯絡後 當你修改了變數的值,而希望對話方塊控制項更新顯示,就應該在修改變數後呼叫 updatedata false 如果你希望知道使用者在對話方塊中到底輸入了什麼,就應該在訪問變數前呼叫updatedata true 用處 主要控制ddx da...

MFC中UpdateData 函式的使用

當你使用了classwizard建立了控制項和變數之間的聯絡後 當你修改了變數的值,而希望對話方塊控制項更新顯示,就應該在修改變數後呼叫 updatedata false 如果你希望知道使用者在對話方塊中到底輸入了什麼,就應該在訪問變數前呼叫updatedata true 用處 主要控制ddx da...